一、系统参数优化
默认的最大打开文件数是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,比较省电。
linux优化配置参考
自研MQTT单机百万TCP连接(服务端+客户端)调优_mqtt 百万并发-CSDN博客文章浏览阅读1k次。netty_mqtt 百万并发https://blog.csdn.net/callouszd/article/details/128965377
二、其他硬件问题排查问题
1、常用的 cpu、内存、磁盘剩余
注:window也有优化系统分页大小和文件句柄数,这里不做介绍了
#常见的cpu 运行 top 然后按键盘 1
top
#内存
free -h
#磁盘剩余
df -TH
2、网络问题排查
某次排查问题,居然是网线的问题。
2.1 排查机器的网卡与交换机的协商网速
ethtool 网卡名 | grep Speed
2.2 排查压测机器与目标机器的网络带宽
在centos 7/8 安装iperf3最新版本。_centos8 安装iperf-CSDN博客文章浏览阅读4.4k次,点赞3次,收藏13次。废话不多说,直接切入正题。iperf3最新版官网下载:https://iperf.fr/iperf-download.php#fedora1、先去这里选择自己操作系统版本,然后下载rpm包我这里以centos为例:2、复制下载链接wget下载,或者手动下载上传到服务器上也可以,随自己喜好wget https://iperf.fr/download/fedora/iperf3-3.1.3-1.fc24.x86_64.rpm3、在下载iperf3rpm包的位置下,._centos8 安装iperfhttps://blog.csdn.net/muxia_i/article/details/1088129871)rocky 是安装 iperf3
yum install iperf3
2)开放被测那台的防火墙的5201端口
firewall-cmd --zone=public --add-port=5201/tcp --permanent
firewall-cmd --reload
3)启动服务端
iperf3 -s
4)启动客户端,测目标网速
linux 测试
iperf3 -c 目标ip
如下图:interval:表示iperf测试的时间间隔
Transfer:表示iperf测试期间传输的数据量, 1GBytes转G需处于8
Bandwidth:表示iperf测试期间的带宽,即数据传输速率,单位也需要除以8
window 测试
下载软件:https://iperf.fr/iperf-download.php#windows
压缩包解压,再压缩包运行
.\iperf3.exe -c 172.26.203.111 5201
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字样。
3.1 测试磁盘读写速度
hdparm -t /dev/sda1
3.2 查看机械转速
hdparm -I /dev/sda | grep Rotation
安装 磁盘测试工具
yum install hdparm
三、系统监控、排查性能瓶颈
简单压测用
apipost 简单的性能压测总结_apipost压测-CSDN博客文章浏览阅读679次,点赞9次,收藏7次。2)数据库配置文件写了占了2G+内存(my.cnf文件),redis+syslog+nginx 最好2G内存-实际大概1G ,消息队列1G内存,Java系统推荐2~4G,所以8G内跑差不多1千;1)jdk默认256M给100用,推荐给1000+人同时用JVM 堆栈建议2G~4G(目前定了机型4核8G内存 2T磁盘做radio0存储);3)16G内存能够很好的跑1千+,最好适当调整mysql、nginx(跟cpu主要相关)、程序的jvm堆栈大小。(在接口旁边就有个一键压测),专业的还是得jmater;_apipost压测https://blog.csdn.net/qq_26408545/article/details/136019421?spm=1001.2014.3001.5502
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、登陆控制台:
centos可root登陆,rocky无法root登陆
https://IP:9090/system
2、查看cpu和内存占用:
点击下面的查看指标和历史记录
注:点击右上角的管理认证,可申请更大的权限
3、安装可查看历史的插件
点击上图的查看历史和指标,可查看当前机器的情况
会提示安装插件(非必须,对机器有一定的损耗),安装好后,提示注销会重新登陆
相应的指标会存储到redis内(提示安装redis,不推荐安装);
4、提示安装redis,安装后的情况
(不建议点击提示安装,能实时查看即可)
自动安装的redis位置;运行:where redis
注:点击右上角可添加新的主机(只要装了:cockpit)
点击存储和网路,可查看到其他信息