运行环境为centos7,tomcat和mysql的优化方式,经验总结
2017-07-19 16:07
507 查看
一般在服务的cpu占用很高时,
1.使用ps -mp pid -o THREAD,tid,time命令查看该进程的线程情况,可以列举出占用高的线程,挑选个占用高的线程的tid,eg:挑选TID为14065的线程,查看该线程的堆栈情况,先将线程id转为16进制,使用printf "%x\n" tid命令进行转换(
再使用jstack命令打印线程堆栈信息,命令格式:jstack pid |grep tid -A 30(pid:进程id,tid:转换后的线程id的16进制),可以打印出堆栈信息,在堆栈信息中查看问题所在。
2.也可以使用jstack命令查看进程的堆栈情况
4.优化tomcat:配置tomcat的最大连接数,配置连接池。配置协议为nio协议,并发会比默认的bio好些:
,还有在catalina.sh文件中可以配置输出/dev/null
6.mysql优化:修改mysql的最大连接数,可以在my.cnf中配置,这样配置在重启后不需要重新配置,也可以用语句配置set max_connections,这样配置每次重启后需要重新配置。
如果mysql的cpu占用很高的话,可以尝试优化wait_timeout的时间,默认是28800,如果在多个连接时,可能会无法释放等待的连接,但是配置释放时间时要记得将项目中配置的数据库连接池中的相关参数也进行配置
7.优化linux系统的time_wait连接的回收时间,
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.out3.若定位出的信息只是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"
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="200"/> <Connector port="1881" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />5.关系tomcat的日志:server.xml中
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />注释掉,这个配置是输出localhost日志的
,还有在catalina.sh文件中可以配置输出/dev/null
if [ -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,如果在多个连接时,可能会无法释放等待的连接,但是配置释放时间时要记得将项目中配置的数据库连接池中的相关参数也进行配置
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)--> <property name="removeAbandonedTimeout" value="150"/> <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> <property name="maxWait" value="3000"/>否则代码进行连接后也无法对等待连接进行释放。
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,这样可以增大系统可以被连接的数量
相关文章推荐
- 阿里云服务器CentOS7配置Java Web项目运行环境(MySql,Tomcat,Jre)
- linux搭建java web项目运行环境(java+tomcat+mysql)
- Ubuntu14.04系统10分钟搭建JavaWeb常用运行环境(jdk+tomcat+mysql+phpmyadmin)
- 一键搞定JavaEE应用,JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0.9版
- 总结使用Unity 3D优化游戏运行性能的经验
- [转]总结使用Unity 3D优化游戏运行性能的经验
- 一、java运行环境安装之-linux centos6.6安装mysql 5.6安装步骤【rpm安装方式】
- (转)总结使用Unity 3D优化游戏运行性能的经验
- DSP程序开发与优化经验之二:程序运行时间测量方法总结
- Mysql优化常用经验总结
- 总结使用Unity 3D优化游戏运行性能的经验
- php在eclipse+tomcat+mysql环境下运行
- 总结使用Unity 3D优化游戏运行性能的经验
- 关于Eclipse + tomcat + mysql 环境搭建总结
- Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结
- tomcat5_5 jndi各种配置方式分析总结(mysql)
- win2008 r2 服务器php+mysql+sqlserver2008运行环境配置(从安装、优化、安全等)
- 总结使用Unity 3D优化游戏运行性能的经验
- 用xampp设置php运行环境经验总结(转载)
- 一键搞定JavaEE应用, JRE + Tomcat + Mysql - JaveEE绿色运行环境JTM0.9版,将web变得像桌面应用一样简单.