对服务器进行优化(我们的项目用的服务器就是Tomcat,一个Tomcat安装好到Linux系统上,然后项目war扔在里面,你跑吧),今天试试捋一捋思路
服务器配置就是选择CPU核数、内存大小、磁盘大小及类型、网络带宽
,因为软件的最终运行性能与软件的实现方式是紧密相关的,即使是同一个后端应用程序中的两个接口,由于具体功能的差别,性能也会有所差别,所以其实咱们是没有办法知道一台需要达到1000000TPS的后端服务器的配置应该是什么样子的!因此,服务器配置的选择应该基于具体的测试结果【一开始可以选用配置较低的服务器做调优和测试,并以该服务器的测试结果作为选择服务器的依据】
对服务器负载进行分析时,主要分析CPU使用率、内存使用率、磁盘I/O,服务器负载和带宽使用情况
。在实际情况下,为了应对一下突发性的请求压力,服务器CPU使用率一般需要在75%以下。如果一台服务器的CPU使用率多次高于75%,这时候就考虑增加新的服务器
。htop工具【yum install htop -y,安装完成后我们就可以通过htop命令观察CPU负载了】可以非常直观看到CPU使用率、内存使用率、及负载等信息
。
一般分为物理内存和虚拟内存,其中物理内存指的是服务器的内存,而虚拟内存指的是硬盘的一块空间【当物理内存使用率达到100%时将会使用虚拟内存】
。
一般而言,服务器的物理内存应该保持在80%以下,虚拟内存使用率保持在0%
。单位时间内平均的活跃进程数
,是一个表示服务器负载的指标。
一般情况下需要保证平均负载的值小于当前服务器的CPU核数
。应该保证服务器的带宽使用率在80%以上,物理网卡限制了服务器所能使用的最大宽带
。
并不是所有的服务器都需要做高并发性能调优
,一般来说,只需要对要处理高并发请求的服务器进行内核参数调优即可
,常见的包括:前端服务器,后端服务器,数据库服务器。# 为防止洪水攻击,高并发系统需要将此项关闭
net.ipv4.tcp_syncookies = 0
# 开启TCP连接重用,允许处理TIME-WAIT状态的连接重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1
# 开启快速回收TCP连接中处于TIME-WAIT状态的连接
net.ipv4.tcp_tw_recycle = 1
#修改超时时间( s ),该值表示如果连接由本端关闭,则连接处于 FIN-WAIT-2状态的时间为
net.ipv4.tcp_fin_timeout = 30
#当 keepalive(长连接)启用的时候,TCP发送 keepalive 消息(探测包)的时间间隔( s ),默认为2个小时
net.ipv4.tcp_keepalive_time =1200
#服务器对外连接的端口范围,影响该服务器与其他服务器的连接数
net.ipv4.ip_local_port_range =102465535
#SYN队列的长度,可以容纳更多等待连接的网络连接数,默认为1024
net.ipv4.tcp_max_syn_backlog = 65535
#保持 TIME_WAIT 状态连接的最大数量,如果超过此值,TIME_WAIT 将立刻被清除并打印警告信息,默认为180000
net.ipv4.tcp_max_tw_buckets =5000
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog =65535
# TCP最大连接数
net.core.somaxconn = 65535
#预留用于接收缓冲的内存默认值(字节)
net.core.rmem_default = 8388608
#预留用于接收缓冲的内存最大值(字节)
net.core.rmem_max = 16777216
#预留用于发送缓冲的内存默认值(字节)
net.core.wmem_default = 8388608
#预留用于发送缓冲的内存最大值(字节)
net.core.wmem_maX = 16777216
#避免时间戳异常
net.ipv4.tcp_timestamps = 0
#系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上,如果超过这个数字,连接将即刻被复位并打印警告信息,这个限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans =3276800
巨人的肩膀:
巨人的肩膀:
高性能mysql
mysql技术内幕
月伴飞鱼
mysql中文文档
码哥字节
macrozheng