博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EMQ配置
阅读量:5815 次
发布时间:2019-06-18

本文共 7360 字,大约阅读时间需要 24 分钟。

参考官方配置页面:http://emqtt.com/docs/v2/tune.html

Linux 操作系统参数

系统所有进程可打开的文件数量
官方配置:

sysctl -w fs.file-max=2097152sysctl -w fs.nr_open=2097152echo 2097152 > /proc/sys/fs/nr_open

服务器当前配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/fs/file-max 798344[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/fs/nr_open 1048576

  

修改服务器配置:

echo 1048576 > /proc/sys/fs/file-maxecho 1048576 > /proc/sys/fs/nr_open

  

[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 1048576 > /proc/sys/fs/file-max[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/fs/file-max 1048576[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 1048576 > /proc/sys/fs/nr_open[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/fs/nr_open1048576

  

系统允许当前进程打开的文件数量:

官方配置:

ulimit -n 1048576

  

本地服务器配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 31402max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 278528pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 65535virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimied

 

修改配置文件:

ulimit -n  524288

  

修改后配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# ulimit -n  524288[root@iZuf6ixy03u72vzno4jsiuZ ~]# ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 31402max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 524288pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 10240cpu time               (seconds, -t) unlimitedmax user processes              (-u) 65535virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited

 

/etc/sysctl.conf

持久化 ‘fs.file-max’ 设置到 /etc/sysctl.conf 文件:

  

官方配置:

fs.file-max = 1048576#表示文件句柄的最大数量

 

修改配置:

vm.swappiness = 0net.ipv4.neigh.default.gc_stale_time=120net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.all.arp_announce=2net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_synack_retries = 2net.ipv4.conf.lo.arp_announce=2# fs.file-max=65535fs.file-max=524288

  

设置服务最大文件句柄数

/etc/systemd/system.conf 设置服务最大文件句柄数:
DefaultLimitNOFILE=1048576

持久化设置允许用户/进程打开文件句柄数

/etc/security/limits.conf 持久化设置允许用户/进程打开文件句柄数:
limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。

官方配置:

* soft nofile 1048576* hard nofile 1048576

  

服务器配置:

# End of file* soft nofile 65535* hard nofile 65535* soft nproc 65535* hard nproc 65535* soft nofile 65535* hard nofile 65535* - nofile 278528

 

服务器修改后配置:

# End of file* soft nofile 65535* hard nofile 65535* soft nproc 65535* hard nproc 65535* soft nofile 524288* hard nofile 524288* - nofile 278528

TCP 协议栈网络参数

并发连接 backlog 设置:

官方配置:

sysctl -w net.core.somaxconn=32768#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。sysctl -w net.ipv4.tcp_max_syn_backlog=16384#对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。sysctl -w net.core.netdev_max_backlog=16384#在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

服务端配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/somaxconn128[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/netdev_max_backlog1000

修改配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 8192 >/proc/sys/net/core/somaxconn[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/somaxconn8192[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog4096[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 4096 > /proc/sys/net/core/netdev_max_backlog[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/netdev_max_backlog4096

  

可用知名端口范围:

官方配置:

sysctl -w net.ipv4.ip_local_port_range='1000 65535'

 

服务端配置

cat /proc/sys/net/ipv4/ip_local_port_range[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/ipv4/ip_local_port_range32768 61000

TCP Socket 读写 Buffer 设置:

官方配置:

sysctl -w net.core.rmem_default=262144#表示接收套接字缓冲区大小的缺省值(以字节为单位)sysctl -w net.core.wmem_default=262144#表示发送套接字缓冲区大小的缺省值(以字节为单位)sysctl -w net.core.rmem_max=16777216#表示接收套接字缓冲区大小的最大值sysctl -w net.core.wmem_max=16777216#表示发送套接字缓冲区大小的最大值sysctl -w net.core.optmem_max=16777216#该文件表示每个套接字所允许的最大缓冲区的大小

服务端配置:

[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/rmem_default124928[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/wmem_default124928[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/rmem_max124928[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/wmem_max124928[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/core/optmem_max20480

修改服务端配置:

echo 4194304 > /proc/sys/net/core/rmem_maxecho 4194304 > /proc/sys/net/core/wmem_maxecho 4194304 > /proc/sys/net/core/optmem_maxcat /proc/sys/net/ipv4/tcp_mem#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216'

内核分配给TCP连接的内存

第一个数字表示,当 tcp 使用的 page 少于 196608 时,kernel 不对其进行任何的干预
第二个数字表示,当 tcp 使用了超过 262144 的 pages 时,kernel 会进入 “memory pressure” 压力模式
第三个数字表示,当 tcp 使用的 pages 超过 393216 时(相当于1.6GB内存),就会报:Out of socket memory

sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216'sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'#为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte第一个数字表示,为TCP连接分配的最小内存第二个数字表示,为TCP连接分配的缺省内存第三个数字表示,为TCP连接分配的最大内存[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/ipv4/tcp_mem753600  1004800 1507200#无修改

  

TCP 连接追踪设置:

官方配置:

sysctl -w net.nf_conntrack_max=1000000sysctl -w net.netfilter.nf_conntrack_max=1000000#CONNTRACK_MAX 允许的最大跟踪连接条目,是在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目)sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30

服务端配置:

cat /proc/sys/net/nf_conntrack_maxcat /proc/sys/net/netfilter/nf_conntrack_maxcat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/nf_conntrack_max65536[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/netfilter/nf_conntrack_max65536[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait120

  

修改服务端配置:

echo 250000 > /proc/sys/net/nf_conntrack_maxecho 250000 > /proc/sys/net/netfilter/nf_conntrack_max

TIME-WAIT Socket 最大数量、回收与重用设置

官方配置:

net.ipv4.tcp_max_tw_buckets=1048576#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。

当前服务器配置:

cat /proc/sys/net/ipv4/tcp_max_tw_buckets[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/ipv4/tcp_max_tw_buckets5000

 

修改服务器配置:

echo 262114 > /proc/sys/net/ipv4/tcp_max_tw_buckets

注意: 不建议开启該设置,NAT模式下可能引起连接RST

# net.ipv4.tcp_tw_recycle = 1# net.ipv4.tcp_tw_reuse = 1

  

FIN-WAIT-2 Socket 超时设置:

net.ipv4.tcp_fin_timeout = 15 cat /proc/sys/net/ipv4/tcp_fin_timeout

  

[root@iZuf6ixy03u72vzno4jsiuZ ~]# echo 15 > /proc/sys/net/ipv4/tcp_fin_timeout[root@iZuf6ixy03u72vzno4jsiuZ ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout15

  

提高Linux应对短连接的负载能力

在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有时候,这个数目是惊人的:
netstat -ant|grep -i time_wait |wc -l
可能会超过三四万。这个时候,我们需要修改 linux kernel 的 tcp time wait的时间,缩短之,有个 sysctl 参数貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是 60,也就是60秒。

 

 

 

转载地址:http://ctmbx.baihongyu.com/

你可能感兴趣的文章
哪些因素影响Java调用的性能?
查看>>
Delphi 程序错误写法造成Oracle数据库负载异常
查看>>
用“大数据”服务城市治理和社会管理
查看>>
容器集群部署 选好编排工具是关键
查看>>
浅谈商业保理公司风险控制——微金时代解决方案
查看>>
五种手段抵御社会工程攻击
查看>>
物联网中的大数据架构、应用案例以及带来的好处
查看>>
提高Python运行效率的六个窍门
查看>>
SOA和云解决数据管理风险问题的正确姿势
查看>>
5G混战 美日中欧如何抢占频谱资源?
查看>>
安全不要本末倒置 透过WannaCry说说安全之道
查看>>
六个提示 预防企业数据发生灾难
查看>>
广电总局发函禁止浙、沪两地电视盒子预装视频App,谁会受影响?
查看>>
每个创业者会犯的十个创业基本错误
查看>>
如何基于编排工具打造可扩展的容器环境
查看>>
滚蛋吧!云端 DDoS 攻击
查看>>
你还记得神马搜索吗?
查看>>
阿根廷400MW太阳能项目将于11月进行第二轮招标
查看>>
Android自定义BaseAdapter最佳实践
查看>>
润达光伏2016年净利润2093万元 同比增长19%
查看>>