centos tomcat mysql_运行环境为centos7,tomcat和mysql的优化方式,经验总结

一般在服务的cpu占用很高时,

1.使用ps -mp pid -o THREAD,tid,time命令查看该进程的线程情况,可以列举出占用高的线程,挑选个占用高的线程的tid,eg:挑选TID为14065的线程,查看该线程的堆栈情况,先将线程id转为16进制,使用printf "%x\n" tid命令进行转换(printf "%x\n" 14065

)

再使用jstack命令打印线程堆栈信息,命令格式:jstack pid |grep tid -A 30(pid:进程id,tid:转换后的线程id的16进制),可以打印出堆栈信息,在堆栈信息中查看问题所在。

2.也可以使用jstack命令查看进程的堆栈情况jstack 14063 >>jstack.out

3.若定位出的信息只是gc问题这类的,没有定位到问题代码,那么就在服务器的配置上进行下手优化,如果定位到是GC线程占用cpu高导致进程的占用高,可以尝试配置jvm的内存占用初始值和最大值,eg:JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m",如果是优化tomcat的jvm,则可以在不影响服务器中其他程序运行的情况下,可以将tomcat的jvm尝试配置为服务器屋里内存的一半,在配置完成重启后使用top查看当前tomcat的进程的%mem是在不断增长的,但是增长到大概接近配置值后就不回再继续增长了。

4.优化tomcat:配置tomcat的最大连接数,配置连接池。配置协议为nio协议,并发会比默认的bio好些:protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="2000" minSpareThreads="200"/>

connectionTimeout="20000"

URIEncoding="UTF-8"

redirectPort="8443"

/>

5.关系tomcat的日志:server.xml中

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

注释掉,这个配置是输出localhost日志的

,还有在catalina.sh文件中可以配置输出/dev/nullif [ -z "$CATALINA_OUT" ] ; then

#CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

CATALINA_OUT=/dev/null

fi

这样就不输出catalina的日志了。

6.mysql优化:修改mysql的最大连接数,可以在my.cnf中配置,这样配置在重启后不需要重新配置,也可以用语句配置set max_connections,这样配置每次重启后需要重新配置。

如果mysql的cpu占用很高的话,可以尝试优化wait_timeout的时间,默认是28800,如果在多个连接时,可能会无法释放等待的连接,但是配置释放时间时要记得将项目中配置的数据库连接池中的相关参数也进行配置

否则代码进行连接后也无法对等待连接进行释放。

7.优化linux系统的time_wait连接的回收时间,通过调整内核参数解决

vi /etc/sysctl.conf

编辑文件,加入以下内容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

然后执行/sbin/sysctl -p让参数生效。

net.ipv4.tcp_syncookies = 1表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;

net.ipv4.tcp_fin_timeout修改系統默认的TIMEOUT时间。

8.放开ulimit -n的值,系统默认打开文件数是1024,设置成ulimit -n 65535,这样可以增大系统可以被连接的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值