一、系统参数优化
默认的最大打开文件数是1024.不满足生产环境的要求。按照如下配置:
1、修改 systemctl管理的 servie 资源限制
编辑/etc/systemd/system.conf
# 全局的打开文件数
DefaultLimitNOFILE=2097152
# 全局打开进程数
DefaultLimitNPROC=65535
2、调整系统内核参数
编辑文件/etc/sysctl.conf
# 全局:端口最大的监听队列的长度,可为:32768
net.core.somaxconn=32768
# 内存分配模式:1为不限制
vm.overcommit_memory = 1
# 单进程打开文件句柄数
fs.nr_open = 2097152
# 系统打开文件句柄数
fs.file-max = 2097152
# 大i/o独立部署中间件选配,例如:redis、队列、数据库等;
# 请求连接保存在队列中的最大数目
net.ipv4.tcp_max_syn_backlog=16384
# 网络接口接收数据包比内核处理速率快时,允许送到队列的数据包的最大数目。
net.core.netdev_max_backlog=16384
# 每个tcp连接占用内存,共三个值:最小字节数 默认值 最大字节数
net.ipv4.tcp_mem = 786432 2097152 3145728
# 每个tcp连接的读缓冲(接收缓冲),缓存从对端接收的数据,后续会被应用程序读取
net.ipv4.tcp_rmem = 2048 32768 4194304
# 每个tcp连接的写缓冲(发送缓冲),缓存应用程序的数据,有序列号被应答确认的数据会从发送缓冲区删除掉
net.ipv4.tcp_wmem = 2048 8192 2097152
添加完成后,刷新内核参数,立即生效:执行命令
/sbin/sysctl -p
3、调整用户组的资源限制
修改limits.conf。需重启生效,vi /etc/security/limits.conf
# 用户会话的 打开文件句柄数
* soft nofile 1048576
* hard nofile 1048576
# 用户会话的 打开进程数限制
* soft nproc 65535
* hard nproc 65535
# * 代表所有用户
# nofile 在测试最大连接数时,可以设置,例如:2097152 = 2048 * 1024。
# 在实际环境中,因为还要处理数据业务逻辑,太大的值其实没有必要,例如:1048576 = 1024 * 1024
3.1 查看是否生效
#用户级别的系统配置
ulimit -a
#open file文件限制数
ulimit -n
#进程限制数
ulimit -u
4、其他不推荐使用的
# cpupower设置performance
cpupower frequency-set -g performance
# 查看一个cpu的工作模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
工作模式包含:
1 ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是 ondemand。
2 interactive:交互模式,直接上最高频率,然后看 CPU 负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。
3 conservative:保守模式,类似于 ondemand,但调整相对较缓,想省电就用他吧。Google 官方内核,kang 内核默认模式。
4 smartass:聪明模式,是 I 和 C 模式的升级,该模式在比 interactive 模式不差的响应的前提下会做到了更加省电。
5 performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。
6 powersave 省电模式,通常以最低频率运行。
7 userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节 CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置
8 Hotplug:类似于 ondemand, 但是 cpu 会在关屏下尝试关掉一个 cpu,并且带有 deep sleep,比较省电。
二、其他非软件优化
注:window也有优化系统分页大小和文件句柄数,这里不做介绍了
1、相应优化参考
自研MQTT单机百万TCP连接(服务端+客户端)调优_mqtt 百万并发-CSDN博客文章浏览阅读1k次。netty_mqtt 百万并发https://blog.csdn.net/callouszd/article/details/128965377
2、我们测试某台是网线太次:居然百兆网线
线上查找了半天:
ethtool 网卡名 | grep Speed
3、某次bom测试,ssd写性能比机械测试差距3倍
当前磁盘中速度最快的应该是SSD了。查看命令:
> yum install lsscsi
# 列出 SCSI 设备(或主机)及其属性
> lsscsi
[0:2:0:0] disk DELL PERC H330 Adp 4.30 /dev/sda
[14:0:0:0] cd/dvd HL-DT-ST DVD+-RW GU90N A3C3 /dev/sr0
显然,我的电脑上没有SSD,只是普通的磁盘。如果有SSD,第5列会显示SSD字样。
三、系统监控、排查性能瓶颈
1、启动cockpit
可1台监控多台,运行
systemctl start cockpit
systemctl status cockpit
centos7 可能不存在,则自己安装一下
yum install cockpit
2、 开放9090端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --reload
注删除端口开放名令
firewall-cmd --permanent --zone=public --remove-port=9090/tcp
firewall-cmd --reload
查看防火墙列表
firewall-cmd --list-all
2、登陆控制台(无法用root登陆):
https://IP:9090/system
2、查看cpu和内存占用:
点击下面的查看指标和历史记录
注:点击右上角的管理认证,可申请更大的权限
3、安装可查看历史的插件
点击上图的查看历史和指标,可查看当前机器的情况
会提示安装插件(非必须,对机器有一定的损耗),安装好后,提示注销会重新登陆
相应的指标会存储到redis内(提示安装redis,不推荐安装);
4、提示安装redis,安装后的情况
(不建议点击提示安装,能实时查看即可)
自动安装的redis位置;运行:where redis
注:点击右上角可添加新的主机(只要装了:cockpit)
点击存储和网路,可查看到其他信息