記一次 500併發,平均響應時間慢-調優過程~~
1、背景:LR壓測,併發 500、持續壓測10 分鐘~
壓測結果,平均響應時間長
從報告可知,主要瓶頸在js、css、img上
2、解決 啟用nginx 快取、叢集部署、tomcat執行緒調優 linux核心調優
tomcat7 啟用nio、調大最大執行緒。等待佇列
<Connector port="6002" enableLookups="false" maxKeepAliveRequests="1" acceptCount="550" minSpareThreads="300" maxThreads="400" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="60000"
URIEncoding="UTF-8"
redirectPort="8443" />
初始堆記憶體設定
JAVA_OPTS="-Xms3g -Xmx3g -Xss1024K"
nginx快取配置,注意:需要單獨一個server
http模組配置:
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /opt/nginx/temp_dir1;
proxy_cache_path /opt/nginx/cache1 levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
#gzip on;
gzip on; #開啟gzip
gzip_vary on;
gzip_min_length 1k; #不壓縮臨界值,大於1k的才壓縮,一般不用改
gzip_buffers 4 16k;
gzip_comp_level 6; #壓縮級別,數字越大壓縮的越好
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-icon; #壓縮檔案型別,缺啥補啥
server 模組~
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~ .*\.(gif|jpg|png|css|js)?$ {
proxy_pass http://server.settle;
#快取
proxy_cache cache_one;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 10d;
}
location /fsp-manage {
proxy_pass http://server.settle;
proxy_set_header Host 172.16.2.136:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
linux 核心調整,軟體的口已經放大-需要硬體的口支撐。
核心TCP引數方面
cat /etc/sysctl.conf
########################## aliyun configure ##########################
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
# see details in https://help.aliyun.com/knowledge_detail/41334.html
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
kernel.sysrq = 1
########################## jiaxin configure ##########################
fs.file-max = 1631224
vm.overcommit_memory = 1
vm.max_map_count=655350
net.ipv4.ip_local_port_range = 1024 65530
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_congestion_control = hybla
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 87380 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 20
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 65000
儲存退出之後執行 sysctl -p 引數生效,永久生效
3、調整過程中注意觀察 nginx access.log、tomcat _localhost_accsess.log 入口日誌~~
效果如下
相關文章
- 記一次SQL調優過程SQL
- 記一次分割槽表update調優過程
- Laravel 高併發調優筆記Laravel筆記
- 記一次開啟資料庫慢原因分析過程資料庫
- 一次 kafka 消費者的效能調優過程Kafka
- 一次資料庫響應慢分析資料庫
- 完整的一次 HTTP 請求響應過程(二)HTTP
- 完整的一次 HTTP 請求響應過程(一)HTTP
- 一次併發處理過程, 基於 RedisRedis
- 通過MapReduce降低服務響應時間
- MySQL 記一次 Bug發現過程MySql
- 排查Mysql突然變慢的一次過程MySql
- 記一次效能調優
- 為什麼所有的查詢條件都命中索引還是那麼慢?記一次慢查詢優化過程索引優化
- 記一次"截圖"功能的專案調研過程!
- 記一次nodejs開發CLI的過程NodeJS
- 一次sqlldr匯入慢的解決過程SQL
- 阿里雲SLB負載均衡實踐,解決高併發響應慢阿里負載
- Apache 記錄請求響應時間日誌Apache
- 解Bug之路-記一次中介軟體導致的慢SQL排查過程SQL
- go dns解析過程及調優GoDNS
- 記一次安全應急響應事件事件
- 記一次 Istio 衝刺調優
- c++ CopyFile函式響應時間過長問題。C++函式
- 記一次 Java 應用記憶體洩漏的定位過程Java記憶體
- 記一次專案中解決 -- 併發減庫存超賣問題過程(Java)Java
- 記一次線上商城系統高併發的優化優化
- 記,一次線上商城系統高併發的優化!優化
- curl命令檢視響應時間
- 線上定時指令碼執行慢,分析過程指令碼
- 使用Python獲取DNS解析時間和響應時間PythonDNS
- 記一次挖礦病毒應急響應事件事件
- 記一次挖礦病毒的應急響應
- Tomcat 高併發之道與效能調優Tomcat
- MySQL多執行緒併發調優MySql執行緒
- 記一次"記憶體洩露"排查過程記憶體洩露
- 記一次 GitLab 的遷移過程Gitlab
- 記一次OOM問題排查過程OOM