1、查看服务器情况
首先,在第一次压测过后,你可以看到服务器的各项数据
一开始的服务器配置为:
16G内存(已用13.6G,剩余可用2G)
8核2600MHZ
带宽20M
如图所示,我这边带宽和cpu已经不太能顶住这个压力了,所以后续都暂时升级了。(还需要看数据库、redis等压力情况)
后续服务器配置为:
32G内存
16核
带宽50M
2、修改linux系统
2.1、socket 的最大连接数的修改,在centos中修改socket最大连接数的方法 (这里的文件是进程文件已经在运得的,不能使用vim编辑器修改),方法如下
cat /proc/sys/net/core/somaxconn
echo 50000 > /proc/sys/net/core/somaxconn (系统默认的值是128,现在改成50000)
2.2、加快系统的tcp回收机制 (系统默认tcp在断开后还会存活一段时间) 方法如下
cat /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle (系统默认是0,修改为1)
2.3、允许空的tcp回收利用 方法如下
cat /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse (系统默认为0,修改为1)
2.4、让系统不做洪水抵御保护,(当系统检测到80端口在大量的请求时,会自动给返回信息中增加 cookie ,还验证客户端身份,从而避免受到攻击,但这时只是高并发,并不是攻击,所以要把这个抵御机制给关闭) 方法如下
cat /proc/sys/net/ipv4/tcp_syncookies
echo 0 >/proc/sys/net/ipv4/tcp_syncookies(系统默认为1,修改为0)
修改完如上linux配置后,apache-jmeter-5.6.3压测工具自测,连续请求10组(每次/1200),平均访问时间已达300ms左右,修改前是平均3.8s(此时还不是并发1200)(在操作这一步之前,我nginx配置是已经修改过的)
3、修改nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
#worker_rlimit_nofile 65535;
events {
worker_connections 1024;
# multi_accept on; # 同时接受多个连接请求,提高处理效率
# use epoll; # 在 Linux 上使用 epoll 事件模型,提升性能
}
http {
upstream backend {
server 127.0.0.1:9511;
# server 127.0.0.1:9513;
# server 127.0.0.1:9514;
# keepalive 1024; # 根据需要调整
}
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;