linux服务器最大支持连接数
当我们被问到一台linux服务器最多可以支持多少连接时,很多人第一反应是65535个,因为端口是65535个,还有人说受到TCP连接里四元组的空间大小限制,那么到底是多少?
首先解释一下TCP连接的四元组,源IP、源端口、目的IP、目的端口,每一个元素的改变,都会生成一个新的链接。因为服务器的IP是固定的,假设端口也是固定的,就是访问80端口,那么理论上还可以建立2的32次方(IP数量)× 2的16次方(端口数),将近200多亿的连接了。这当然是不可能的,原因请继续往下看。
因为在Linux系统下一切皆文件,那么每创建一个进程都会创建一个文件对象,而创建的文件对象都会消耗一定的内存资源,为了避免五险创建和打开文件导致系统崩溃,操作系统对打开的文件时有限制的
这三个限制的含义和修改方式如下:
用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf
进程级:单个进程可打开的最大数量,通过fs.nr_open参数可修改
系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改
[email protected] # sysctl -a|grep rmem
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.udp_rmem_min = 4096
其中在tcp_rmem"中的第一个值是为你们的TCP连接所需分配的最少字节数。该值默认是4K,最大的话8MB之多。也就是说你们有数据发送的时候我需要至少为对应的socket再分配4K内存,甚至可能更大。
[email protected] # sysctl -a|grep wmem
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.udp_wmem_min = 4096
在net.ipv4.tcp_wmem"中的第一个值是发送缓存区的最小值,默认也是4K。当然了如果数据很大的话,该缓存区实际分配的也会比默认值大。
上一篇: shell—字符串截取和去重
下一篇: Linux命令:uniq
推荐阅读
-
php获取服务器端mac和客户端mac的地址支持WIN/LINUX_PHP
-
Linux基础:如何找出你的系统所支持的最大内存
-
使用xp_cmdshell注销Windows登录用户(终端服务器超出最大连接数)
-
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
-
使用xp_cmdshell注销Windows登录用户(终端服务器超出最大连接数)
-
详解Linux环境下使Nginx服务器支持中文url的配置流程
-
Linux上架设支持JSP+PHP的Web服务器
-
linux中高并发socket最大连接数的优化详解
-
Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号
-
Linux基础:如何找出你的系统所支持的最大内存