邯郸建网站公司,ui设计需要学什么软件,常州网站建设维护,视频链接生成器在线linux 最大允许TCP连接数 约束一#xff1a;服务器的端口范围约束二#xff0c;服务器文件描述符限制约束三#xff1a;系统线程约束四#xff1a;系统内存总结 tcp连接四元组#xff1a;源ip#xff0c;源端口 目标ip#xff0c;目标端口 连续对同一个目标ip及… linux 最大允许TCP连接数 约束一服务器的端口范围约束二服务器文件描述符限制约束三系统线程约束四系统内存总结 tcp连接四元组源ip源端口 目标ip目标端口 连续对同一个目标ip及端口进行tcp连接的建立最多建立的连接个数受服务器的端口范围限制 约束一服务器的端口范围
ERROR: connect cannot assign requested address
linux对可使用端口范围限制
cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000自定义端口范围
vim /etc/sysctl.conf# 添加一行记录
net.ipv4.ip_local_port_range 60000 60009# 保存后执行
sysctl -p /etc/sysctl.conf连续对同一ip端口建立连接在服务器端口不够时切换目标端口可以继续申请连接只要四元组不重复即可 约束二服务器文件描述符限制
ERROR: socket too many open files
文件描述符不够用了
每一个tcp连接对应一个文件描述符
linux对可打开的文件描述符数量限制
# 系统级当前系统可打开的最大数量
cat /proc/sys/fs/file-max
# 用户级指定用户可打开的最大数量
cat /etc/security/limits.conf
# 进程级单个进程可打开的最大数量
cat /proc/sys/fs/nr_open修改单个进程可打开的最大文件描述符限制
echo 100 /proc/sys/fs/nr_open约束三系统线程
在多线程并发模型下每新建一个TCP连接都需要开启一个线程当开启连接数量过多时因为线程上下文切换而导致系统响应越来越慢
C10K 问题当服务器连接数达到1万且每个连接需要消耗一个线程资源时操作系统就会不停的忙于线程的上下文切换导致系统崩溃
切换到IO多路复用模型 约束四系统内存
ERROR: out of memory
每个TCP连接本身以及连接所用到的缓冲区都需要占用一定的内存
在系统内存足够大的情况下最终也会因为大量TCP占用线程而导致CPU满载从而达到瓶颈
总结
linux服务器开启最大TCP连接数
首先在目标IP和端口固定的情况下取决于系统对可开启端口范围的限制是多少
在端口范围最够大的情况下取决于文件描述符的限制三个级别系统、用户、进程
文件描述符限制足够大的情况下取决于线程模型如果是多线程模型即一个TCP连接占用一个线程那么可能会因为上下文切换而导致CPU满载
加入采用IO多路复用的情况下仍然需要考虑系统内存是否足够支撑海量的TCP连接因为每一个TCP连接会占用一些内存
最后如果系统内存也足够大那么最终的瓶颈会是CPU的线程上下文切换最终会导致系统卡死