/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
limits.conf文件ios
vi /etc/security/limits.conf
在最末尾添加sql
* soft nofile 65535 * hard nofile 65535
查看是否生效apache
ulimit -a
手動修改(重啓失效)緩存
ulimit -n 65535
主模塊參數: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參數的時間內文件的最少使用次數,若是超過這個值,則保持緩存的打開狀態。
下面的配置選項可能比較少(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
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"
查看CPU負載狀況
top
查看內存的使用狀況
free -m
查看磁盤IO的狀況
iostat -kx 2
查看網絡的流量狀況
sar -n DEV 2
參考資料:關於Nginx的一些優化(突破十萬併發)