Month: September 2012

找出线上java应用中的哪段代码在大量耗费性能

你发现你的机器的cpu usage达到了100%,并且发现都是你的java应用导致的;但是,这个应用里具体哪段代码在这样吃性能呢? 以下来自一个同事的分享: 1. 先找出吃性能的线程: top -H -p pid,找出最耗性能的线程ID(最左列) 2. 获得线程ID的16进制表示: printf ‘0x%x\n’ 线程ID 3. 然后生成一下jstack,比如 kill -3 pid 4. 在生成的jstack里搜索 线程ID的16进制表示即可

推荐一个GC日志分析工具: PrintGCStats

一个用shell写成的GC日志分析工具,用于进行各种统计,非常小巧好用。 下载: 点这里 使用: ./PrintGCStats -v cpus=4 ~/temp/gc.log #cpus代表逻辑cpu数 样例输出: 引用 what           count          total          mean           max     stddev gen0(s)            4         15.606       3.90150        11.344     5.0888 gen0t(s)           4         15.607       3.90169        11.344     5.0888 cmsIM(s)         225        740.826       3.29256         3.908     0.3529 cmsRM(s)         224        654.354       2.92122         3.570     0.3063 GC(s)            229       1410.787       6.16064        11.344    -1.0000 cmsCM(s)         224        960.213       4.28667         6.262     0.1990 cmsCP(s)         448       …

推荐一个GC日志分析工具: PrintGCStats Read More »

@Autowired优先按type注入,@Resource优先按name注入

在spring框架下使用注入annotation,应该用@Autowired还是@Resource? 基本上都差不多,但如果存在不同bean共享同一个java类的情况,则应该使用@Resource. 因为, @Resource寻找bean的顺序   Matches by Name   Matches by Type @Autowired寻找bean的顺序    Matches by Type      //如果存在不同Bean共享java类,就会出现NoUniqueBean异常   Matches by Name 更多请见 http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/

linux: 用iptables搭建NAT服务

客户端所在局域网的网关的配置(SNAT): iptables -t nat -A POSTROUTING -s 192.168.0.2 -o eth0 -j MASQUERADE #把来自内网192.168.0.2的数据包通过eth0这个外网网口转发出去,并把数据包的源IP改成eth0网口的IP 服务器所在局域网的网关的配置(DNAT): iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.100.10:80 #把来自外网(网口eth0)的数据包的目标IP改为192.168.100.10,好让它最终到达内网里的192.168.100.10机器

linux: 用iptables构建软件防火墙

查看当前规则: sudo iptables-save 设置默认规则: iptables -P INPUT DROP  #如果所有过滤规则都不匹配,则丢弃数据包 插入一条规则:   iptables -A INPUT -s 10.19.18.23 -j REJECT  #拒绝从10.19.18.23进来的任何数据包   iptables -A INPUT -s 10.19.18.23/32 -p tcp -m tcp –dport 80 -j DROP #拒绝10.19.18.23访问本机80端口   iptables -A INPUT -p icmp –icmp-type 8 -j DROP  #拒绝任何人ping我   iptables -A INPUT -m state –state ESTABLISHED -j ACCEPT …

linux: 用iptables构建软件防火墙 Read More »

删除不掉.fuse_hiddenxxx文件?

这些文件之所以存在,是因为某些程序正在运行,如果你想强行删,一般都删不掉。 你可以试着退出一些程序,比如eclipse什么的,等程序退出了,这些文件可能就会自动消失

linux: 使用TCP Wrappers构建简单的防火墙

   TCP Wrappers可用于配置基于程序名的过滤配置    要配置TCP Wrappers,只要修改/etc/hosts.allow和/etc/hosts.deny即可    比如    [root@www ~]# vim /etc/hosts.allow ALL: 127.0.0.1 #本机所有访问都允许 httpd: 10.0.0.100 #只允许这个IP访问httpd       另外,hosts.allow是白名单,hosts.deny是黑名单,两个同时用,怎么回事?  实际的规则是(鸟哥的原话):         1. 先以 /etc/hosts.allow 为优先比对,该规则符合就予以放行;    2. 再以 /etc/hosts.deny 比对,规则符合就予以抵挡;    3. 若不在这两个档案内,亦即规则都不符合,最终则予以放行。    最后要注意,TCP Wrappers并不支持对任意程序的配置。它主要用于httpd, ssh, vsftpd等服务。