读书人

提掏出某日访问网站次数最多的那K个IP

发布时间: 2012-10-20 14:12:47 作者: rapoo

提取出某日访问网站次数最多的那K个IP之并发版

前边提到了单线程的实现,这里贴出多线程版,此处主要用多线程去处理hash后的小文件:

?

?

? ? ? 测试了下,3线程是120s左右,串行是320s左右,的确提高了很多。测试机子是4核cpu,如果启4个线程,机器都变得很卡,cpu居高不下。另jvm启动参数为:

?

-server-Xmx1024m-Xms1024m-Xmn600m-XX:+UseConcMarkSweepGC-XX:ParallelGCThreads=4

? ? ? 因为此处理过程中,大多数对象存活周期并不长,所以可以把新生代设置大一些。堆初始化设置大些,避免minor gc的时候才去扩展内存大小,因为可以预料到程序一旦启动,加载的内存的东西就会很多。

另外,此处垃圾收集器是用了cms,老生代内存回收就用了cms,新生代用了PurNew,并行收集的,设置gc线程数等于cpu内核数。当然这里也可以设置成-XX:+UseParallelGC、-XX:+UseParallelOldGC都可以,此处主要是新生代内存回收频繁,所以一定要把新生代设置成并发或并行版本的。

通过-server把虚拟机启动为server模式,这样运行时候会启用c2级别的JIT优化,能获得更高质量的编译代码。当然server模式下启动的jvm,默认使用的gc收集器跟-XX:UseParallelGC使用的一样

读书人网 >编程

热点推荐