Linux、mysql、tomcat大并发下的配置
- - Linux - 操作系统 - ITeye博客 因为之前一直没太接触过项目实现部署的问题,所以中间出现了N多问题,现在有时间了,做了一个整理,已备后用. 此处不包括上一层服务器的负载,如使用nginx/apache等. 配置项目中的连接池最大连接数 <= mysql的max_connections(如项目有集群,则乘N). 可解决出现:MySQL 提示 Too many connections ( 1040 ).
SELECT @@max_connections; -- 查看现有设置数量
set global max_connections = 3600; -- 重启后失效
Linux: vi /etc/my.cnf
max_connections=5000
Linux: service mysqld start
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m"
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" // NIO executor="tomcatThreadPool" // Executor 线程池 compression="on" compressionMinSize="2048" maxThreads="30000" //设定处理客户请求的线程的最大数目,决定了服务器可以同时响应客户请求的数,默认200 minSpareThreads="512" //初始化线程数,最小空闲线程数,默认为10 maxSpareThreads="2048" enableLookups="false" //关闭DNS反向查询,性能高设false redirectPort="8443" acceptCount="35000" //当所有可以使用的处理请求的线程数都被使用时,可以被放到处理队列中请求数,请求数超过这个数的请求将不予处理,默认100 debug="0" connectionTimeout="40000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
# 显示当前所有的 limit 信息 Linux: ulimit -a # Linux操作系统对一个进程可以打开最大文件描述符的数量 Linux: ulimit -n # 用户最大可用的进程数 Linux: ulimit -u
ulimit -SHn 65535
Linux: vi /etc/security/limits.conf
# *代表针对所有用户 * soft nofile 65535 * hard nofile 65535
Linux: vim /etc/security/limits.d/90-nproc.conf
# 添加如下的行 * soft nproc 102400 root soft nproc 102400
Linux: vim /etc/sysctl.cnf
net.core.netdev_max_backlog = 32768 net.core.somaxconn = 32768 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 65536
Linux: sysctl -p