centos7 十万并发 关健配置

Posted on 2018-01-25 02:18  黔人阿诺  阅读(574)  评论(0)    收藏  举报

 启用 MySQL缓存 【最重要

 启用html CSS JS 分离 开启缓存后节省带宽 【重要

 启用html生成 

 启用html 缓存

 启用CSS JS 及图片缓存

 启用CDN

 ulimit命令

ulimit [-SHacdefilmnpqrstuvx] [limit]
 
-S 设置软件资源限制
-H 设置硬件资源限制
-a 显示当前所有的资源限制
-c size:设置core文件的最大值
-d size:设置数据段的最大值.
-f size:设置创建文件的最大值.
-l size:设置在内存中锁定进程的最大值
-m size:设置可以使用的常驻内存的最大值
-n size:设置内核可以同时打开的文件最大值
-p size:设置管道缓冲区的最大值
-s size:设置堆栈的最大值
-t size:设置CPU使用时间的最大上限
-v size:设置虚拟内存的最大值.单位

 

下面操作会严重影响系统性能,请先做备份再修改!

unlimited 是一个特殊值,用于表示不限制

 /etc/security/limits.d/20-nproc.conf

* soft nproc 4096
root soft nproc unlimited

 

/etc/security/limits.conf配置文件  已经最大 如卡死 可以在PHP等中配置并发数来保证运行流畅 

#@student - maxlogins 4

# End of file
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
## abase create ##

 

vim /etc/sysctl.conf,添加 --开机启动加载内核参数 :

# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
#防止杀死大内存应用 例MYSQL
vm.overcommit_memory = 1

# 网络配置
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 2048
net.core.netdev_max_backlog = 2048
 
# 安全性
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.tcp_syncookies = 1
 
# 性能优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.ip_local_port_range = 4000 65000
 
# 防止DOS攻击
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.core.netdev_max_backlog = 30000

  

 

然后执行以下命令重载配置  

sysctl -p

  

 

 

/proc/sys/kernel/sem 

250     32000   100     128 

  

 

 

/etc/systemd/system.conf

DefaultLimitCORE=infinity
#DefaultLimitRSS=
DefaultLimitNOFILE=1024000
#DefaultLimitAS=
DefaultLimitNPROC=1024000

  

 进程不是越大越好 不要乱写比如上万 高并发也会卡死

 把PHP 连接方 改为 TCP  这个很重要

因为/tmp/php-cgi-72.sock 文件在高并发时可能会因为大量进程访问 /tmp/php-cgi-72.sock 文件时会出错(系统文件打开数量调到最大也会)导致卡顿。

 

修改 Nginx 进程最大可打开文件数(worker_processes和worker_connections)

(8核机器)

worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

  

(16核机器)

worker_processes 16;
worker_cpu_affinity 
0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;

 

worker_rlimit_nofile 655350;

#error_log logs/error.log; 
#error_log logs/error.log notice; 
#error_log logs/error.log info; 
#pid logs/nginx.pid; 
events { 
        use epoll; 
        worker_connections 655350; 
}