[C/C++]使用epoll提高网编编程性能
epoll的限制不在于FD_MAXSIZE,而是每个进程所可以打开的最大IO文件描述符。
使用root权限执行修改系统设置
#设置进程允许打开最大文件描述符
echo "ulimit -n 40960" >> /etc/profile
. /etc/profile
#设置TCP协议栈未完成连接队列长度
echo "40960" > /proc/sys/net/ipv4/tcp_max_syn_backlog
#设置TCP协议栈三次握手连接完成队列长度
echo "10240" > /proc/sys/net/core/somaxconn
#设置TCP协议栈写缓冲区最大长度
echo "2048000" >/proc/sys/net/core/wmem_max
#设置TCP协议栈读缓冲区最大长度
echo "1024000" > /proc/sys/net/core/rmem_max
这样获取当前系统的ulimit值。
struct rlimit strlimit;
int iRet = getrlimit(RLIMIT_NOFILE, &strlimit);