[ZBX-17621] zabbix server listen backlog SOMAXCONN has fixed to 128, changing net.core.somaxconn and restarting zabbix-server doesn't work Created: 2020 Apr 23  Updated: 2024 Feb 09  Resolved: 2021 May 21

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Server (S)
Affects Version/s: None
Fix Version/s: None

Type: Problem report Priority: Trivial
Reporter: stan zhang Assignee: Zabbix Development Team
Resolution: Duplicate Votes: 1
Labels: performance, usability
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

zabbix-server-mysql 4.4 running on rhel7.4


Issue Links:
Duplicate
duplicates ZBX-7933 zabbix generate TCP queue overflow Closed

 Description   

Steps to reproduce:

  1. set net.core.somaxconn to bigger than 128, using sysctl -w net.core.somaxconn=12800;
  2. start zabbix-server service;
  3. using "ss -tnlp | grep zabbix" to check the zabbix server listen state , and find that the send-q is still 128, but it should be 12800;

Result:

LISTEN     0      128          *:10051                    *:*                   users:(("zabbix_server",pid=1581,fd=4),("zabbix_server",pid=1580,fd=4),("zabbix_server",pid=1579,fd=4),("zabbix_server",pid=1578,fd=4),("zabbix_server",pid=1577,fd=4),("zabbix_server",pid=1576,fd=4),("zabbix_server",pid=1575,fd=4),("zabbix_server",pid=1574,fd=4),("zabbix_server",pid=1573,fd=4),("zabbix_server",pid=1572,fd=4),("zabbix_server",pid=1571,fd=4),("zabbix_server",pid=1570,fd=4),("zabbix_server",pid=1569,fd=4),("zabbix_server",pid=1568,fd=4),("zabbix_server",pid=1567,fd=4),("zabbix_server",pid=1566,fd=4),("zabbix_server",pid=1565,fd=4),("zabbix_server",pid=1564,fd=4),("zabbix_server",pid=1563,fd=4),("zabbix_server",pid=1562,fd=4),("zabbix_server",pid=1561,fd=4),("zabbix_server",pid=1560,fd=4),("zabbix_server",pid=1559,fd=4),("zabbix_server",pid=1558,fd=4),("zabbix_server",pid=1557,fd=4),("zabbix_server",pid=1556,fd=4),("zabbix_server",pid=1555,fd=4),("zabbix_server",pid=1554,fd=4),("zabbix_server",pid=1553,fd=4),("zabbix_server",pid=1552,fd=4),("zabbix_server",pid=1551,fd=4),("zabbix_server",pid=1550,fd=4),("zabbix_server",pid=1549,fd=4),("zabbix_server",pid=1548,fd=4),("zabbix_server",pid=1547,fd=4),("zabbix_server",pid=1546,fd=4),("zabbix_server",pid=1543,fd=4),("zabbix_server",pid=1538,fd=4))

Expected:
the listen socket backlog should be equal to SOMAXCONN, set in sysctl 12800.

i have saw the source code about listen() at line 1147 and 1308 in src/libs/zbxcomms/comms.c, the backlog value in listen() is set to "SOMAXCONN", but i can NOT found the reference of "SOMAXCONN", which is 128 in /usr/include/bits/socket.h. if you include this socket.h when compiling, it will fix to 128 and never bigger than 128.

So is there any way to change it, or add a parameter "ListenBacklog" to zabbix_server.conf?



 Comments   
Comment by Glebs Ivanovskis [ 2020 Apr 25 ]

From man listen:

       If the backlog argument is greater than the value in
       /proc/sys/net/core/somaxconn, then it is silently truncated to that
       value.  Since Linux 5.4, the default in this file is 4096; in earlier
       kernels, the default value is 128.  In kernels before 2.4.25, this
       limit was a hard coded value, SOMAXCONN, with the value 128.

I guess SOMAXCONN needs to be replaced with INT_MAX and users will be able to control actual value using net.core.somaxconn.

Comment by stan zhang [ 2020 Apr 26 ]

@Glebs yes, exactly

Comment by Glebs Ivanovskis [ 2020 May 21 ]

It seems there is an older issue, see ZBX-7933.

Generated at Sun May 04 06:29:37 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.