972209541-593a9e78b438f_articlex.png

系统方面做如下优化

[root@xxxxxxxx conf]# ulimit -n
65535
[root@xxxxxxxx conf]# more /proc/sys/net/core/somaxconn
128
[root@xxxxxxxx conf]# echo 50000 > /proc/sys/net/core/somaxconn #设置最大连接数
[root@xxxxxxxx conf]# more /proc/sys/net/core/somaxconn
50000
[root@xxxxxxxx conf]# cat /proc/sys/net/ipv4/tcp_tw_recycle 
0
[root@xxxxxxxx conf]# echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle #加快tcp回收,保证tcp_timestamps = 1
[root@xxxxxxxx conf]# cat /proc/sys/net/ipv4/tcp_tw_recycle 
1
[root@xxxxxxxx conf]# cat /proc/sys/net/ipv4/tcp_tw_reuse 
0
[root@xxxxxxxx conf]# echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse #空的tcp允许回收利用
[root@xxxxxxxx conf]# cat /proc/sys/net/ipv4/tcp_tw_reuse 
1
[root@xxxxxxxx conf]# more /proc/sys/net/ipv4/tcp_syncookies 
1
[root@xxxxxxxx conf]# echo 0 > /proc/sys/net/ipv4/tcp_syncookies #关闭洪水防御,是否需要关闭洪水抵御 看自己业务,比如秒杀,肯定需要关闭了
[root@xxxxxxxx conf]# more /proc/sys/net/ipv4/tcp_syncookies
[root@xxxxxxxx  conf]#  /proc/sys/net/ipv4/tcp_max_tw_buckets 180000 否则经常出现 time wait bucket table overflow
[root@xxxxxxxx  conf]#  tcp_nodelay on 小文件快速返回,我之前通过网络挂载磁盘出现找不到的情况
[root@xxxxxxxx  conf]#  tcp_nopush on
[root@xxxxxxxx  conf]#  ulimit -a 65535

nginx方面

//nginx.conf中配置
worker_processes 4;#根据CPU核心数计算
worker_cpu_affinity 0001 0010 0100 1000;#根据worker_processes计算

worker_rlimit_nofile 10000;   //子进程允许打开的文件数
keepalive_timeout 60;          //结束响应后立即断开tcp连接。
//keeplive_timeout表示tcp完成响应后,继续保持连接多久。如果这个值过大,会造成资源无效占用。
events{
    worker_connections 10240;
}

这里只是大概的一个配置,当然还有其他优化项,后面的文章会提到。