You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux系统下提升redsocks最大连接数(超过128)及配置文件listenq参数疑问

Linux系统下提升redsocks最大连接数(超过128)及配置文件listenq参数疑问

嗨,我来帮你搞定这个问题!

一、如何把redsocks的max_conn调到128以上

其实调整max_conn本身并不复杂,关键是要配合系统层面的配置,不然光改redsocks参数可能达不到预期效果:

  1. 修改redsocks配置文件
    找到你的redsocks配置文件(通常是/etc/redsocks.conf或者自定义路径),直接修改max_conn参数,比如改成:
    max_conn = 512;
    
    数值可以根据服务器负载和资源情况调整,比如1024、2048都可以,只要系统能扛得住就行。
  2. 调整Linux系统的文件描述符限制
    每个网络连接都会占用一个文件描述符,系统默认的文件描述符上限可能不够支撑大量连接:
    • 临时生效(当前会话):执行命令
      ulimit -n 4096
      
    • 永久生效:编辑/etc/security/limits.conf,添加以下两行(数值可按需调整):
      * soft nofile 4096
      * hard nofile 8192
      
      保存后重启系统或者重新登录用户才能生效。
    • 调整系统全局文件描述符上限:编辑/etc/sysctl.conf,添加
      fs.file-max = 65536
      
      然后执行sysctl -p让配置立即生效。
  3. 重启redsocks服务
    修改完配置后,重启redsocks才能让新的max_conn参数生效,比如用systemd管理的话:
    systemctl restart redsocks
    

二、解释配置文件里的listenq参数

你看到的这行注释:

// listenq = 128; // SOMAXCONN equals 128 on my Linux box.

它说的是redsocks监听套接字的连接请求队列长度(对应TCP的backlog参数)。当有大量客户端同时发起连接请求时,这个队列用来存放那些已经完成TCP三次握手、但还没被redsocks进程处理的连接。

注释里的SOMAXCONN是Linux内核默认的最大backlog值,很多系统默认是128。如果你的服务器并发连接请求特别多,也可以把这个值调大(比如改成listenq = 256;),但要注意同步调整内核参数net.core.somaxconn
编辑/etc/sysctl.conf添加

net.core.somaxconn = 256

然后执行sysctl -p生效,不然listenq设置的数值超过内核默认的SOMAXCONN的话,会被内核自动截断到SOMAXCONN的数值,相当于白改了。

备注:内容来源于stack exchange,提问作者sadeq

火山引擎 最新活动