服务器一直报CPU饥饿,经过查看GC日志发现系统频繁出现full GC,求教各位大大,如何进行调优?
服务器配置: 8C48G
jvm参数:-Xss1m -Xgcpolicy:optavgpause -Xmns256m -Xmnx512m -Xjit:codetotal=131072 -Xgcthreads2 -Xloamaximum0.2 -Xverbosegclog:${SERVER_LOG_ROOT}/verbosegc.log,20,50000 -Ddefault.client.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=Zh -Duser.region=UTF-8
最大堆大小设置:16G 初始堆大小:8G
附一段GC日志如下:
<con event="completed full sweep" timestamp="Jul 21 09:39:56 2015"> <stats sweepbytes="0" sweeptime="0.137" connectbytes="1071644672" connecttime="0.404" />
嗯,我觉得楼主可以从这几个方面考虑服务器调优的事情,希望我的回复对你有帮助。
一、 CPU问题
a)考虑使用更高级的CPU代替目前的CPU
b)对于多个CPU,考虑CPU之间的负载分配
c)考虑在其他体系上设计系统,例如增加前置机、设置并行服务器等
二、内存和高速缓存
a)内存的优化包括操作系统、数据库、应用程序的内存优化
b)过多的分页与交换可能降低系统的性能
c)内存分配也是影响系统性能的主要原因
d)保证保留列表具有较大的邻接内存块
e)调整数据块缓存区大小(用数据块的个数表示)是一个重要内容
f)将最频繁使用的数据保存在存储区中
三、磁盘(I/O)资源问题
a)磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能
b)磁盘镜像会减慢磁盘写的速度
c)通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能
d)把不同的数据库放在不同的硬盘上,可以提高读写速度。建议把数据库、回滚段、日志放在不同的设备上
e)把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快。
四、调整配置参数
a)包括操作系统和数据库的参数配置
b)并行操作资源限制的参数(并发用户的数目、会话数)
c)影响资源开销的参数
d)与I/O有关的参数
五、优化应用系统网络设置
a)可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样效率较高
b)调整会话数据单元的缓冲区大小
c)共享服务进程比专用服务进程提供更好的性能