linux、mysql、nginx、tomcat 環境下壓力測試的主要調試參數

1、linux 系統內核參數

  1. /etc/sysctl.conf文件經常使用參數mysql

    net.core.netdev_max_backlog = 32768 #容許送到隊列的數據包的最大數目
    net.core.rmem_max  = 8388608        #SOCKET讀緩存區大小
    net.core.wmem_max  = 8388608        #SOCKET寫緩存區大小
    net.core.somaxconn   = 32768        #系統中每個端口最大的監聽隊列的長度
    
    net.core.rmem_max = 16777216        #最大socket讀buffer
    net.ipv4.ip_local_port_range = 1024 65000 #容許系統打開的端口範圍
    net.ipv4.tcp_fin_timeout  = 30   #TIME_WAIT2進入CLOSED的等待時間
    net.ipv4.tcp_keepalive_time = 1200  #TCP發送keepalive消息的時間
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 2
    net.ipv4.tcp_synack_retries = 1  #內核放棄鏈接以前發送SYN+ACK包的數量
    net.ipv4.tcp_syn_retries =1      #內核放棄創建鏈接以前發送SYN包的數量 
    net.ipv4.tcp_max_tw_buckets =6000  #控制TIME_WAIT的最大數量timewait的數量,默認是180000。
    
    net.ipv4.tcp_tw_recycle = 1      #TCP鏈接中TIME-WAIT套接字的快速回收。默認爲0,表示關閉
    
    net.ipv4.tcp_tw_reuse = 1       #容許將TIME-WAIT套接字從新用於新的TCP鏈接。默認爲0,表示關閉。
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_max_syn_backlog = 65536 #SYN隊列的長度,默認爲1024,加大隊列長度爲8192,能夠容納更多等待鏈接的網絡鏈接數
    fs.file-max = 65535       #系統可打開的文件數
    fs.nr_open  = 65535       #fs.file-max的值不要超過fs.nr_open的值

    使sysctl.conf文件的修改生效linux

    sysctl -p
  2. limits.conf文件ios

    vi /etc/security/limits.conf

    在最末尾添加sql

    * soft nofile 65535  
    * hard nofile 65535

    查看是否生效apache

    ulimit -a

    手動修改(重啓失效)緩存

    ulimit -n  65535

2、Nginx主要調試參數

主模塊參數:tomcat

worker_processes = 8           #按照CPU核心數量的設置
worker_rlimit_nofile 65535;    #Nginx進程打開文件描述符最大數量
use epoll;                     #使用epoll事件模型
worker_connections = 102400     #每一個進程的最大鏈接數

HTTP模塊參數網絡

keepalive_timeout 60;          #keepalive超時時間。
client_body_buffer_size 64K;   #客戶端請求內容的緩衝區大小。
client_header_buffer_size 8k;  #客戶端請求頭部的緩衝區大小,能夠根據系統的分頁大小來設置。
large_client_header_buffers 4 128k; 
client_max_body_size 8m;       #客戶端請求內容的最大值。
open_file_cache max=204800 inactive=30s;  #打開文件的緩存,max指緩存的最大數量,inactive指緩存過時時間。
open_file_cache_valid 30s;     #檢查緩存的有效時間。
open_file_cache_min_uses 1;    #inactive參數的時間內文件的最少使用次數,若是超過這個值,則保持緩存的打開狀態。

3、mysql

下面的配置選項可能比較少(8G內存的MySQL),實際會超過不少人的須要,之後能夠根據MySQL的運行狀態進行修改。併發

[mysql]
port                           = 3306
socket                         = /var/lib/mysql/mysql.sock
[mysqld]
user                           = mysql
default_storage_engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid_file                       = /var/lib/mysql/mysql.pid
skip_name_resolve
key_buffer_size                = 32M
myisam_recover                 = FORCE,BACKUP
max_allowed_packet             = 16M
max_connect_errors             = 1000000
log_bin                        = /var/lib/mysql/mysql-bin
expire_logs_days               = 7
sync_binlog                    = 0
tmp_table_size                 = 32M
max_heap_table_size            = 32M
query_cache_type               = 1
query_cache_size               = 32M
max_connections                = 500
thread_cache_size              = 50
open_files_limit               = 65535
table_definition_cache         = 1024
table_open_cache               = 2048
innodb_flush_method            = O_DIRECT
innodb_log_files_in_group      = 2
innodb_log_file_size           = 256M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table          = 1
innodb_buffer_pool_size        = 4G
log_error                      = /var/log/mysql-error.log
log_queries_not_using_indexes  = 1
slow_query_log                 = 1
slow_query_log_file            = /var/log/mysql-slow.log

4、tomcat

tomcat中server.xml配置
Connector標籤下 8080 端口
修改protocol="org.apache.coyote.http11.Http11NioProtocol"
增長以下參數app

connectionTimeout="20000"
processorCache="1000"
acceptCount="5000"
acceptorThreadCount="8"#根據實際cpu核數配置
maxThreads="2000"
minSpareThreads="100"
socket.appReadBufSize="1024"
socket.appWriteBufSize="1024"
socket.bufferPool="1000"

catalina.sh
tomcat啓動文件,根據實際狀況作調整,-XX:NewRatio用於配置老生代與新生代的比例
增長JAVA_OPTS="-server -Xms1048m -Xmx3072m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m -XX:NewRatio=4"

5、硬件負載

查看CPU負載狀況

top

查看內存的使用狀況

free -m

查看磁盤IO的狀況

iostat -kx 2

查看網絡的流量狀況

sar -n DEV 2

參考資料:關於Nginx的一些優化(突破十萬併發)

相關文章
相關標籤/搜索