高并发是一个很热门的词语,面试经常会被问题。但是很多高并发的实现都是从应用层解决的。在linux服务器系统上也需要进行优化,从而支持高并发。
首先使用ulimit -a查看系统的限制
我的腾讯云学生机1c 1g的机器
这里重点关注open files
和max user processes
第一个会影响tcp连接数,第二个会影响系统进程数量。
第一个系统会分为硬限制和软限制。硬限制是硬件层的限制,根据你的服务器配置来进行限制
可以通过命令cat /proc/sys/fs/file-max来查看。我的1c 1g的机器大概tcp硬限制是(硬限制也可以修改)
具体修改是/etc/security/limits.conf
* soft nproc 65535//进程数量
* hard nproc 65535
* soft nofile 65535//文件数量
* hard nofile 65535
接下来还有一些网络的配置
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65536 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_window_scaling = 0 net.ipv4.tcp_sack = 0 net.core.netdev_max_backlog = 30000 net.ipv4.tcp_no_metrics_save=1 net.core.somaxconn = 262144 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2