在搭建web服務(wù)器時(shí),搭建性能優(yōu)化是搭建一個(gè)非常重要的環(huán)節,本文將以CentOS為例,搭建介紹如何進(jìn)行web服務(wù)器的搭建性能調優(yōu)。
系統優(yōu)化
1、搭建內核參數優(yōu)化
net.ipv4.tcp_sy?n??cookies = 1net.ipv4.tcp_tw_reuse = 1net?.ipv4.tcp_twヽ(′?`)ノ_(??-)?recycle = 0net.ipv4.tcp_fin_timeout = 30net.ipv4.tc??p_keep??alive_time = 1200net.ipv4.ip_local_port_range = 10000 65535net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_fastopen = 3net.ipv4.tcp_ヾ(′?`)?rmem = 4096(′?_?`) 8738??0 67108864net.ipv4.tcp_wmem = 4096 65ヽ(′ー`)ノ536 67??108864??net.ipv4.tcp_mtu_probing = 1net.ipv4.tcp_congestion_con?trol = hyblanet.ipv4.tcp_rfc1337 = 12、SEL(′▽?zhuān)?)inux優(yōu)化
SELinux是一個(gè)安全模塊,但它可能會(huì )影響服務(wù)器的性能,我們可(ke)以通過(guò)以下命令臨ヾ(^-^)ノ時(shí)??關(guān)ヽ(′ー`)ノ閉SELinux:
setenforce 0Web服務(wù)器優(yōu)化
1、Nginx優(yōu)化
Nginx是(′?`*)一個(gè)非常高效的web服務(wù)器,我們可以通過(guò)以下方法進(jìn)行優(yōu)化:
調整worker進(jìn)程數和worker_conn(?Д?)ections參數,以充分利用CPU和內存資源(′?`)。
worker_processes auto;wor??ker_??connections 1024;啟用gzip壓縮,減少傳輸數據量。
gzip on;gzip_min_len??gth(′?ω?`) 1k;gzip_comp_level 2;gzip_types text/plain text/css applicati(′?`*)on/json application/javascript;
啟用緩存,減少對后端服務(wù)器的壓力。
location ~* .(jpg|jpeg|pn??g|gif|ico)$ { expires 30d;}loca(?????)tion ~* .(js|css)?$ { expires 7d;}2、Apache優(yōu)化
Apache也是一個(gè)常用的web服務(wù)器,我們可以通過(guò)以下方法進(jìn)行優(yōu)化:
調整MPM(多進(jìn)程模(′?`)塊??)類(lèi)型,以充分利用CPU和內存資源,將prefork MPM修改為wor??ker MPM:
<a2(′-ι_-`)dismod preforka2enmod work??er
啟用KeepAlive功能,減少連接建立和關(guān)閉的開(kāi)(?Д?)銷(xiāo)。
KeepAlive On;MaxKe(′▽?zhuān)?epAliveRequests 100;KeepAl(′;д;`)iveTimeout 5;啟用Gzip壓縮,減少傳(chuan)輸數據量。
LoadModule deflate_module modules/mod_deflate.so;AddOutputFilterByTy??pe DEFLATE text/html text/plain text/xml text/css applicat??ion/javascript application/json;BrowserMatch ^Mozilla/4 gziponlytext/html(′?`*);BrowserMatch ^Mozilla/4.0[678] nogzip;BrowserM??atch \bMSIE !nogzip !gziponlytext/html;SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ nogzip dontvary;Hea??der append Vary UserAgent env=!dontvary\ x\\ forwardedfor;
數據庫優(yōu)化
1、MySQL優(yōu)化
調整innodb_bu??ffer_pool_size參數,以充分利用內ヾ(′?`)?存資源。
innodb_??buffer_pool_size = 4G; # 根據??實(shí)際內存大小進(jìn)行調整。啟用查詢(xún)緩存,減少對磁盤(pán)的I/O操作。
query_cache_type = 1; # 開(kāi)啟查詢(xún)緩存,q??uery_cache_size = 64M; # 根據實(shí)際需求調整緩存大小,que?ry_cache_limit = 2M; # 根據實(shí)際需求調整緩存限制,query_cache_min_res_unit = 2k; # 根據實(shí)際需求調(diao)整緩存最小資源單位,q(′▽?zhuān)?)uery_cache_wlock_invalidate = off; # 關(guān)閉寫(xiě)鎖,query_cache_background( ???)_table_cleanup = on; # 開(kāi)啟后臺清理線(xiàn)程,thread_cache_size = 8; # 根據實(shí)際需求調整線(xiàn)程緩存大小,table_open_cache = 2048; # 根據(′?_?`)實(shí)際需求調整??表打開(kāi)緩存,table_definition_cache = 4096; # 根據實(shí)際需求調整表定義緩存,innodb_f??lush_method = O_DIRECT; # 根據實(shí)際需求調整刷新方式,innodb_log_file_size = 512M; # 根據實(shí)際需求調整日志文件大小,innodb_log_buffer_size = 64M; # 根(gen)據實(shí)際需求調整日志緩沖區大小,innodb_io_capacity = 2000; # 根據實(shí)際需求調整I/O容量,innodb_read_io_threads = 8; # 根據實(shí)際需求調整讀I/O線(xiàn)程數,inn(°o°)odb_write_io_threads = 8; # 根據實(shí)際需求調整寫(xiě)I/O線(xiàn)程數,innodb_purge_threads = 4; # 根據實(shí)際需求調整刷新線(xiàn)程數,innodb_page_cleaners = 4; # 根據實(shí)際需求調整頁(yè)面清理線(xiàn)程數,in(′ω`)nodb_lru_scans = 102┐(′ー`)┌4; # 根據實(shí)際需求調整LRU掃描次數,innodb_checksums = on; # 開(kāi)啟校驗和功能,innodb_stats_on_m(′?`)etadata = off; # 關(guān)閉元數據統計信息,innodb_file_(′_ゝ`)per_table = on; # 開(kāi)啟獨立表空間功能,skipnameresolve=on; # 如果DNS解析┐(′д`)┌有問(wèn)題,可以嘗試禁用DNS解析,skipexter??nallocking=on; # 如果遇到外部鎖定??問(wèn)題,可以嘗試禁用外部鎖定,skipnetworking=on; # 如果不需要網(wǎng)絡(luò )連接,可以嘗試禁用網(wǎng)絡(luò )連接,bindaddress=127.0.0.1; # 如果不需要遠程連接??,可以(yi)將綁定地址設置為本地IP地址,max_alloweヾ(′?`)?d_packet=64M; # 根據實(shí)際需求調整最大(??-)?允許包大小,tmpdir=/tmp; # 根據實(shí)際需求調整臨時(shí)目錄位置,maxheaptablesize=64M; # 根據實(shí)際需求調整堆表最大大小,joinedcache=off; # 如果不需要連接??緩存,可以嘗試禁用連接緩存,delayedinsert=off; # 如果不需要延遲插入,可以嘗試禁用延遲插入功能,longquerytime=10s; # 如果需要限制慢查詢(xún)時(shí)間,可以設置此參(can)數,logqueriesnotusingindexes=off; # 如果不需要記錄未使用索引的(de)查詢(xún),可以嘗試禁用此功能,slowquerylog=off; # 如果不需要慢查詢(xún)日志,可以嘗試禁用此功能,l(⊙_⊙)ogerror=/var/log/mysqld.log; # 根據實(shí)際需求調整錯誤日志位置,(╯°□°)╯logwarnings=yes; # 如果需要記錄警告信息,可以設置此參數為y??es或no,logslaveupdates=yes; # 如果需要記錄從庫更新日志,可以設置此參數為yes或no,serverid=1; # 根據實(shí)際需求??設置服務(wù)器ID,binlogformat=mixed; # 如果需要混合格式的二進(jìn)制日志,可以設置此參數為mixed或row或statement或none或raw或miXED或minimal等其他值進(jìn)行嘗試,binlogtransactioncompress??ion=on; # 如果需要壓縮事務(wù)日志,可以設置此參數為on或off或其他值進(jìn)行嘗試,binlogrowimage=minimal; # 如果需要最小行圖像日志格式,可以設置此參數為minimal或full或其他值進(jìn)行嘗試,binlogchecksum=off; # 如果需要校驗(yan)和功能,可以設置此參數為on或off或其他值進(jìn)行嘗試,binlogignoredb=mysql,information schema,performance schema,test,sys,event,mysqldump,myisam,inno

網(wǎng)站二維碼
導航
電話(huà)
短信
咨詢(xún)
地圖
分享