阿里云的服务器CPU提示报警,服务器配置为8核16G的配置,显示每过十分钟CPU使用率飙升到80%,登录服务器上去发现正常情况下
CPU使用还是很低的,业务本身通过log4j2记录日志,10分钟为单位,会生成一个日志文件。大小大概在700~800M左右,请求峰值时可能会更高,达到1.5G
查看消耗高的线程
找到logstash的进程,通过观察十分钟整点时,cpu高的线程主要是由pipeline线程导致的,这时正在通过logstash执行文件行的投递工作,查看官方文档后查看得知工作线程数等于CPU的数量,为了防止CPU持续被占用导致业务线程卡住的情况,针对CPU密集性的操作,相应的通过启动脚本修改了传输的文件行数,减小了pipeline线程数的大小到4个,CPU在十分钟时,CPU大概在50%左右,基本算解决了这个问题,启动脚本如下
nohup ./logstash -f ../sdk_data.conf -b 1024 -w 4 --experimental-java-execution true &