LNMP架構(gòu)下各項(xiàng)配置優(yōu)化總結(jié)

從事php開(kāi)發(fā)的都知道,LNMP一般是指linux+Nginx+MySQL+PHP組合傻谁,也是日常開(kāi)發(fā)和線上環(huán)境中最簡(jiǎn)單的Web服務(wù)器架構(gòu)书劝。為盡可能的提升服務(wù)器響應(yīng)速度,LNMP的配置優(yōu)化是十分關(guān)鍵的步驟咐容。下面分別總結(jié)一下LNMP各組件的配置優(yōu)化方法舆逃。

Linux


關(guān)于Linux優(yōu)化,我們這次主要從內(nèi)核配置方面去講(硬件優(yōu)化增加投入即可)戳粒。內(nèi)核配置優(yōu)化主要圍繞如何提供更好更穩(wěn)定的TCP/IP服務(wù)為主路狮,可以查看這篇文章:從TCP/IP協(xié)議談Linux內(nèi)核參數(shù)優(yōu)化, 這里不在單獨(dú)寫(xiě)了蔚约。

工作進(jìn)程數(shù)量

Nginx運(yùn)行工作進(jìn)程個(gè)數(shù)奄妨,建議按照cpu 數(shù)目來(lái)指定,一般為它的倍數(shù) (如,2個(gè)四核的cpu計(jì)為8)苹祟。

<pre>worker_processes 8;
</pre>

CPU親和力

worker_cpu_affinity 為每個(gè)進(jìn)程分配cpu砸抛,一般情況下一個(gè)進(jìn)程分配一個(gè)cpu评雌,例如8cpu:

<pre>worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000直焙;
</pre>

最大打開(kāi)文件數(shù)

<pre>worker_rlimit_nofile 65535;
</pre>

這個(gè)指令是指當(dāng)一個(gè)nginx進(jìn)程打開(kāi)的最多文件描述符數(shù)目景东,理論值應(yīng)該是最多打開(kāi)文件數(shù)(ulimit -n)與nginx進(jìn)程數(shù)相除,但是nginx分配請(qǐng)求并不是那么均勻奔誓,所以最好與ulimit -n的值保持一致斤吐。

注:文件資源限制的配置可以在/etc/security/limits.conf設(shè)置,針對(duì)root/user等各個(gè)用戶(hù)或者*代表所有用戶(hù)來(lái)設(shè)置厨喂。

<pre>* soft nofile 65535

  • hard nofile 65535
    </pre>

用戶(hù)重新登錄生效和措。

Nginx事件處理模型

<pre>events {
use epoll;
}
</pre>

nginx采用epoll事件模型蜕煌,處理效率高派阱。

工作進(jìn)程連結(jié)束

<pre>worker_connections 65535;
</pre>

設(shè)置每個(gè)進(jìn)程允許的最多連接數(shù), 理論上每臺(tái)nginx 服務(wù)器的最大連接數(shù)為worker_processes*worker_connections斜纪,一般設(shè)置為65535贫母。

開(kāi)啟Gzip壓縮

使用gzip壓縮功能,可能為節(jié)約帶寬傀广,加快傳輸速度颁独。

一般我們需要壓縮的內(nèi)容有:文本,js伪冰,html誓酒,css,對(duì)于圖片贮聂,視頻靠柑,flash什么的不壓縮,使用gzip的功能是需要消耗CPU的吓懈。

<pre>gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_typestext/plain text/css text/JAVAscriptApplication/json application/JavaScript application/x-javascriptapplication/xml;
gzip_vary on;
gzip_proxied any;
gzip on; #開(kāi)啟壓縮功能
</pre>

參數(shù)說(shuō)明:

  • gzip_min_length 1k :設(shè)置允許壓縮的頁(yè)面最小字節(jié)數(shù)歼冰,頁(yè)面字節(jié)數(shù)從header頭的Content-Length中獲取,默認(rèn)值是0耻警,不管頁(yè)面多大都進(jìn)行壓縮隔嫡,建議設(shè)置成大于1K,如果小與1K可能會(huì)越壓越大甘穿。
  • gzip_buffers 4 32k :壓縮緩沖區(qū)大小腮恩,表示申請(qǐng)4個(gè)單位為32K的內(nèi)存作為壓縮結(jié)果流緩存,默認(rèn)值是申請(qǐng)與原始數(shù)據(jù)大小相同的內(nèi)存空間來(lái)存儲(chǔ)gzip壓縮結(jié)果温兼。
  • gzip_http_version 1.1 :壓縮版本秸滴,用于設(shè)置識(shí)別HTTP協(xié)議版本,默認(rèn)是1.1募判,目前大部分瀏覽器已經(jīng)支持GZIP解壓荡含,使用默認(rèn)即可咒唆。
  • gzip_comp_level 6 :壓縮比例,用來(lái)指定GZIP壓縮比释液,1壓縮比最小全释,處理速度最快,9壓縮比最大均澳,傳輸速度快恨溜,但是處理慢,也比較消耗CPU資源找前。
  • gzip_types text/css text/xml application/javascript :用來(lái)指定壓縮的類(lèi)型,‘text/html’類(lèi)型總是會(huì)被壓縮判族。默認(rèn)值: gzip_types text/html (默認(rèn)不對(duì)js/css文件進(jìn)行壓縮)
  • 壓縮類(lèi)型躺盛,匹配MIME型進(jìn)行壓縮;
  • 不能用通配符 text/*形帮;
  • text/html默認(rèn)已經(jīng)壓縮 (無(wú)論是否指定)槽惫;
  • 設(shè)置哪壓縮種文本文件可參考 conf/mime.types。
  • gzip_vary on :varyheader支持辩撑,改選項(xiàng)可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)GZIP壓縮的頁(yè)面界斜,例如用Squid緩存經(jīng)過(guò)nginx壓縮的數(shù)據(jù)。

連接超時(shí)設(shè)置

<pre>keepalived_timeout 65;
client_header_timeout 30;
client_body_timeout 30;
sned_timeout 60;
proxy_send_timeout 300合冀;
reset_timedout_connection on;
</pre>

參數(shù)說(shuō)明:

  • keepalived_timeout :客戶(hù)端連接保持會(huì)話(huà)超時(shí)時(shí)間各薇,超過(guò)這個(gè)時(shí)間,服務(wù)器斷開(kāi)這個(gè)鏈接君躺,對(duì)于一些請(qǐng)求比較大的內(nèi)部服務(wù)器通訊的場(chǎng)景,適當(dāng)加大為120s或者300s,具體根據(jù)不同場(chǎng)景峭判,默認(rèn)值是60秒。
  • client_header_timeout : 客戶(hù)端向服務(wù)器發(fā)送一個(gè)完整的request header的超時(shí)時(shí)間棕叫,如果客戶(hù)端在此時(shí)間內(nèi)沒(méi)有發(fā)送一個(gè)完整的request header林螃,那么Nginx返回HTTP 408錯(cuò)誤(Request Timed Out),默認(rèn)值是60秒俺泣。
  • client_body_timeout: 客戶(hù)端與服務(wù)器建立連接后發(fā)送request body的超時(shí)時(shí)間疗认,如果客戶(hù)端在此時(shí)間內(nèi)沒(méi)有發(fā)送任何內(nèi)容,那么Nginx返回HTTP 408錯(cuò)誤(Request Timed Out),默認(rèn)值是60秒伏钠。
  • reset_timeout_connection :告訴nginx關(guān)閉不響應(yīng)的客戶(hù)端連接横漏。這將會(huì)釋放那個(gè)客戶(hù)端所占有的內(nèi)存空間。
  • send_timeout :發(fā)送數(shù)據(jù)至客戶(hù)端超時(shí)時(shí)間贝润,默認(rèn)60s,如果連續(xù)的60s內(nèi)客戶(hù)端沒(méi)有收到1個(gè)字節(jié),連接關(guān)閉绊茧。
  • proxy_send_timeout:發(fā)送請(qǐng)求給upstream服務(wù)器的超時(shí)時(shí)間,超時(shí)設(shè)置不是整個(gè)發(fā)送期間, 而是在兩次write操作期間, 如果超時(shí)后,upstream沒(méi)有收到新的數(shù)據(jù),nginx會(huì)關(guān)閉連接打掘。

Buffer緩解后端的負(fù)載

在大部分場(chǎng)景下华畏,利用 Nginx 的 buffer(緩沖) 和 cache(緩存) 能力鹏秋,可以大大地減輕負(fù)擔(dān)。

<pre>client_body_buffer_size 16K
client_header_buffer_size 1K
</pre>

  • client_body_buffer_size:允許客戶(hù)端請(qǐng)求的最大單個(gè)文件字節(jié)數(shù),在32位系統(tǒng)上默認(rèn)是8k亡笑,在64位系統(tǒng)上默認(rèn)是16k侣夷。可以在http, server 和 location模塊中指定
  • client_header_buffer_size:用于設(shè)置客戶(hù)端請(qǐng)求的Header頭緩沖區(qū)大小仑乌,大部分情況1KB大小足夠百拓, 默認(rèn)的值是1k

開(kāi)啟高效傳輸模式

<pre>http {
include mime.types;
default_type application/octet-stream;
……
sendfile on;
tcp_nopush on;
……
}
</pre>

  • sendfile on:開(kāi)啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來(lái)輸出文件晰甚,對(duì)于普通應(yīng)用設(shè)為 on衙传,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用,可設(shè)置為off厕九,以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度蓖捶,降低系統(tǒng)的負(fù)載。注意:如果圖片顯示不正常把這個(gè)改成off扁远。
  • tcp_nopush on:必須在sendfile開(kāi)啟模式才有效俊鱼,防止網(wǎng)路阻塞,積極的減少網(wǎng)絡(luò)報(bào)文段的數(shù)量(將響應(yīng)頭和正文的開(kāi)始部分一起發(fā)送畅买,而不一個(gè)接一個(gè)的發(fā)送并闲。)

expires 緩存調(diào)優(yōu)

緩存,主要針對(duì)于圖片谷羞,css帝火,js等元素更改機(jī)會(huì)比較少的情況下使用,特別是圖片洒宝,占用帶寬大购公,我們完全可以設(shè)置圖片在瀏覽器本地緩存365d,css雁歌,js宏浩,html可以緩存?zhèn)€10來(lái)天,這樣用戶(hù)第一次打開(kāi)加載慢一點(diǎn)靠瞎,第二次比庄,就非常快了乏盐!緩存的時(shí)候佳窑,我們需要將需要緩存的拓展名列出來(lái), Expires緩存配置在server字段里面父能。

<pre>location ~* .(ico|jpe?g|gif|png|bmp|swf|flv){ expires 30d; } location ~* .(js|css) {
expires 7d;
}
</pre>

fastcgi 調(diào)優(yōu)

<pre>fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_temp_path/usr/local/nginx1.10/nginx_tmp;
fastcgi_intercept_errors on;
fastcgi_cache_path/usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;
</pre>

  • fastcgi_connect_timeout 600 :指定連接到后端FastCGI的超時(shí)時(shí)間梅鹦。
  • fastcgi_send_timeout 600 :向FastCGI傳送請(qǐng)求的超時(shí)時(shí)間紊浩。
  • fastcgi_read_timeout 600 :指定接收FastCGI應(yīng)答的超時(shí)時(shí)間俄删。
  • fastcgi_buffer_size 64k :指定讀取FastCGI應(yīng)答第一部分需要用多大的緩沖區(qū),默認(rèn)的緩沖區(qū)大小為鹃唯。fastcgi_buffers指令中的每塊大小,可以將這個(gè)值設(shè)置更小瓣喊。
  • fastcgi_buffers 4 64k :指定本地需要用多少和多大的緩沖區(qū)來(lái)緩沖FastCGI的應(yīng)答請(qǐng)求坡慌,如果一個(gè)php腳本所產(chǎn)生的頁(yè)面大小為256KB,那么會(huì)分配4個(gè)64KB的緩沖區(qū)來(lái)緩存藻三,如果頁(yè)面大小大于256KB洪橘,那么大于256KB的部分會(huì)緩存到fastcgi_temp_path指定的路徑中,但是這并不是好方法棵帽,因?yàn)閮?nèi)存中的數(shù)據(jù)處理速度要快于磁盤(pán)熄求。一般這個(gè)值應(yīng)該為站點(diǎn)中php腳本所產(chǎn)生的頁(yè)面大小的中間值,如果站點(diǎn)大部分腳本所產(chǎn)生的頁(yè)面大小為256KB逗概,那么可以把這個(gè)值設(shè)置為“8 32K”抡四、“4 64k”等。
  • fastcgi_busy_buffers_size 128k :建議設(shè)置為fastcgi_buffers的兩倍仗谆,繁忙時(shí)候的buffer。
  • fastcgi_temp_file_write_size 128k :在寫(xiě)入fastcgi_temp_path時(shí)將用多大的數(shù)據(jù)塊淑履,默認(rèn)值是fastcgi_buffers的兩倍隶垮,該數(shù)值設(shè)置小時(shí)若負(fù)載上來(lái)時(shí)可能報(bào)502BadGateway。
  • fastcgi_temp_path :緩存臨時(shí)目錄秘噪。
  • fastcgi_intercept_errors on :這個(gè)指令指定是否傳遞4xx和5xx錯(cuò)誤信息到客戶(hù)端狸吞,或者允許nginx使用error_page處理錯(cuò)誤信息。注:靜態(tài)文件不存在會(huì)返回404頁(yè)面指煎,但是php頁(yè)面則返回空白頁(yè)蹋偏!
  • fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cachelevels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g :fastcgi_cache緩存目錄,可以設(shè)置目錄層級(jí)至壤,比如1:2會(huì)生成16*256個(gè)子目錄威始,cache_fastcgi是這個(gè)緩存空間的名字,cache是用多少內(nèi)存(這樣熱門(mén)的內(nèi)容nginx直接放內(nèi)存像街,提高訪問(wèn)速度)黎棠,inactive表示默認(rèn)失效時(shí)間,如果緩存數(shù)據(jù)在失效時(shí)間內(nèi)沒(méi)有被訪問(wèn),將被刪除镰绎,max_size表示最多用多少硬盤(pán)空間脓斩。
  • fastcgi_cache cache_fastcgi :#表示開(kāi)啟FastCGI緩存并為其指定一個(gè)名稱(chēng)。開(kāi)啟緩存非常有用畴栖,可以有效降低CPU的負(fù)載随静,并且防止502的錯(cuò)誤放生。cache_fastcgi為proxy_cache_path指令創(chuàng)建的緩存區(qū)名稱(chēng)吗讶。
  • fastcgi_cache_valid 200 302 1h :#用來(lái)指定應(yīng)答代碼的緩存時(shí)間燎猛,實(shí)例中的值表示將200和302應(yīng)答緩存一小時(shí)恋捆,要和fastcgi_cache配合使用。
  • fastcgi_cache_valid 301 1d :將301應(yīng)答緩存一天扛门。
  • fastcgi_cache_valid any 1m :將其他應(yīng)答緩存為1分鐘鸠信。
  • fastcgi_cache_min_uses 1 :該指令用于設(shè)置經(jīng)過(guò)多少次請(qǐng)求的相同URL將被緩存。
  • fastcgi_cache_key http://hostrequest_uri :該指令用來(lái)設(shè)置web緩存的Key值,nginx根據(jù)Key值md5哈希存儲(chǔ).一般根據(jù)host(域名)论寨、request_uri(請(qǐng)求的路徑)等變量組合成proxy_cache_key 星立。
  • fastcgi_pass :指定FastCGI服務(wù)器監(jiān)聽(tīng)端口與地址,可以是本機(jī)或者其它葬凳。

禁用訪問(wèn)日志文件

這一點(diǎn)影響較大绰垂,因?yàn)楦吡髁空军c(diǎn)上的日志文件涉及大量必須在所有線程之間同步的IO操作。

<pre>access_log off;
log_not_found off;
error_log /var/log/nginx-error.log warn;
</pre>

若你不能關(guān)閉訪問(wèn)日志文件火焰,至少應(yīng)該使用緩沖:

<pre>access_log /var/log/nginx/access.log main buffer=16k;
</pre>

關(guān)閉版本顯示

<pre>server_tokens off;
</pre>

server_tokens并不會(huì)讓nginx執(zhí)行的速度更快劲装,但它可以關(guān)閉在錯(cuò)誤頁(yè)面中的nginx版本數(shù)字,這樣對(duì)于安全性是有好處的昌简。


MySql

innodb_file_per_table

表的數(shù)據(jù)和索引存放在共享表空間里或者單獨(dú)表空間里占业。我們的工作場(chǎng)景安裝是默認(rèn)設(shè)置了innodb_file_per_table = ON,這樣也有助于工作中進(jìn)行單獨(dú)表空間的遷移工作纯赎。MySQL 5.6中谦疾,這個(gè)屬性默認(rèn)值是ON。

innodb_flush_log_at_trx_commit

默認(rèn)值為1犬金,表示InnoDB完全支持ACID特性念恍。當(dāng)你的主要關(guān)注點(diǎn)是數(shù)據(jù)安全的時(shí)候這個(gè)值是最合適的,比如在一個(gè)主節(jié)點(diǎn)上晚顷。但是對(duì)于磁盤(pán)(讀寫(xiě))速度較慢的系統(tǒng)峰伙,它會(huì)帶來(lái)很巨大的開(kāi)銷(xiāo),因?yàn)槊看螌⒏淖僨lush到redo日志都需要額外的fsyncs该默。

如果將它的值設(shè)置為2會(huì)導(dǎo)致不太可靠(unreliable)瞳氓。因?yàn)樘峤坏氖聞?wù)僅僅每秒才flush一次到redo日志,但對(duì)于一些場(chǎng)景是可以接受的权均,比如對(duì)于主節(jié)點(diǎn)的備份節(jié)點(diǎn)這個(gè)值是可以接受的顿膨。如果值為0速度就更快了,但在系統(tǒng)崩潰時(shí)可能丟失一些數(shù)據(jù):只適用于備份節(jié)點(diǎn)叽赊。說(shuō)到這個(gè)參數(shù)就一定會(huì)想到另一個(gè)sync_binlog恋沃。

innodb_flush_method

這項(xiàng)配置決定了數(shù)據(jù)和日志寫(xiě)入硬盤(pán)的方式。一共有三種方式必指,我們默認(rèn)使用O_DIRECT 囊咏。O_DIRECT模式:數(shù)據(jù)文件的寫(xiě)入操作是直接從mysql innodb buffer到磁盤(pán)的,并不用通過(guò)操作系統(tǒng)的緩沖,而真正的完成也是在flush這步梅割,日志還是要經(jīng)過(guò)OS緩沖霜第。

innodb_log_buffer_size

這項(xiàng)配置決定了為尚未執(zhí)行的事務(wù)分配的緩存。其默認(rèn)值(1MB)一般來(lái)說(shuō)已經(jīng)夠用了户辞,但是如果你的事務(wù)中包含有二進(jìn)制大對(duì)象或者大文本字段的話(huà)泌类,這點(diǎn)緩存很快就會(huì)被填滿(mǎn)并觸發(fā)額外的I/O操作〉琢牵看看Innodb_log_waits狀態(tài)變量刃榨,如果它不是0,增加innodb_log_buffer_size双仍。

innodb_buffer_pool_size

這個(gè)參數(shù)應(yīng)該是運(yùn)維中必須關(guān)注的了枢希。緩沖池是數(shù)據(jù)和索引緩存的地方,它屬于MySQL的核心參數(shù)朱沃,默認(rèn)為128MB苞轿,正常的情況下這個(gè)參數(shù)設(shè)置為物理內(nèi)存的60%~70%。(不過(guò)我們的實(shí)例基本上都是多實(shí)例混部的逗物,所以這個(gè)值還要根據(jù)業(yè)務(wù)規(guī)模來(lái)具體分析搬卒。)

innodb_log_file_size

這是redo日志的大小。redo日志被用于確保寫(xiě)操作快速而可靠并且在崩潰時(shí)恢復(fù)翎卓。如果你知道你的應(yīng)用程序需要頻繁地寫(xiě)入數(shù)據(jù)并且你使用的是MySQL 5.6秀睛,那么你可以一開(kāi)始就把它這是成4G。(具體大小還要根據(jù)自身業(yè)務(wù)進(jìn)行適當(dāng)調(diào)整)

innodb_support_xa

innodb_support_xa可以開(kāi)關(guān)InnoDB的XA兩段式事務(wù)提交莲祸。默認(rèn)情況下,innodb_support_xa=true椭迎,支持XA兩段式事務(wù)提交锐帜。由于XA兩段式事務(wù)提交導(dǎo)致多余flush等操作,性能影響會(huì)達(dá)到10%畜号,所有為了提高性能缴阎,有些DBA會(huì)設(shè)置innodb_support_xa=false。這樣的話(huà)简软,redolog和binlog將無(wú)法同步蛮拔,可能存在事務(wù)在主庫(kù)提交,但是沒(méi)有記錄到binlog的情況痹升。這樣也有可能造成事務(wù)數(shù)據(jù)的丟失建炫。

innodb_additional_mem_pool_size

該參數(shù)用來(lái)存儲(chǔ)數(shù)據(jù)字段信息和其他內(nèi)部數(shù)據(jù)結(jié)構(gòu)。表越多疼蛾,需要在這里分配的內(nèi)存越多肛跌。如果InnoDB用光了這個(gè)池內(nèi)的內(nèi)存,InnoDB開(kāi)始從操作系統(tǒng)分配內(nèi)存,并且往MySQL錯(cuò)誤日志寫(xiě)警告信息衍慎,默認(rèn)8MB转唉。一般設(shè)置16MB。

max_connections

MySQL服務(wù)器默認(rèn)連接數(shù)比較小稳捆,一般也就100來(lái)個(gè)最好把最大值設(shè)大一些赠法。一般設(shè)置500~1000即可每一個(gè)鏈接都會(huì)占用一定的內(nèi)存,所以這個(gè)參數(shù)也不是越大越好乔夯。有的人遇到too many connections會(huì)去增加這個(gè)參數(shù)的大小砖织,但其實(shí)如果是業(yè)務(wù)量或者程序邏輯有問(wèn)題或者sql寫(xiě)的不好,即使增大這個(gè)參數(shù)也無(wú)濟(jì)于事驯嘱,再次報(bào)錯(cuò)只是時(shí)間問(wèn)題镶苞。在應(yīng)用程序里使用連接池或者在MySQL里使用進(jìn)程池有助于解決這一問(wèn)題。

server-id

復(fù)制架構(gòu)時(shí)確保 server-id 要不同鞠评,通常主ID要小于從ID茂蚓。

log_bin

如果你想讓數(shù)據(jù)庫(kù)服務(wù)器充當(dāng)主節(jié)點(diǎn)的備份節(jié)點(diǎn),那么開(kāi)啟二進(jìn)制日志是必須的剃幌。如果這么做了之后聋涨,還別忘了設(shè)置server_id為一個(gè)唯一的值。就算只有一個(gè)服務(wù)器负乡,如果你想做基于時(shí)間點(diǎn)的數(shù)據(jù)恢復(fù)牍白,這(開(kāi)啟二進(jìn)制日志)也是很有用的:從你最近的備份中恢復(fù)(全量備份),并應(yīng)用二進(jìn)制日志中的修改(增量備份)抖棘。

二進(jìn)制日志一旦創(chuàng)建就將永久保存茂腥。所以如果你不想讓磁盤(pán)空間耗盡,你可以用 PURGE BINARY LOGS 來(lái)清除舊文件切省,或者設(shè)置expire_logs_days 來(lái)指定過(guò)多少天日志將被自動(dòng)清除最岗。記錄二進(jìn)制日志不是沒(méi)有開(kāi)銷(xiāo)的,所以如果你在一個(gè)非主節(jié)點(diǎn)的復(fù)制節(jié)點(diǎn)上不需要它的話(huà)朝捆,那么建議關(guān)閉這個(gè)選項(xiàng)般渡。

skip_name_resolve

當(dāng)客戶(hù)端連接數(shù)據(jù)庫(kù)服務(wù)器時(shí),服務(wù)器會(huì)進(jìn)行主機(jī)名解析芙盘,并且當(dāng)DNS很慢時(shí)驯用,建立連接也會(huì)很慢。因此建議在啟動(dòng)服務(wù)器時(shí)關(guān)閉skip_name_resolve選項(xiàng)而不進(jìn)行DNS查找儒老。唯一的局限是之后GRANT語(yǔ)句中只能使用IP地址了蝴乔,因此在添加這項(xiàng)設(shè)置到一個(gè)已有系統(tǒng)中必須格外小心。

sync_binlog

sync_binlog 的默認(rèn)值是0驮樊,像操作系統(tǒng)刷其他文件的機(jī)制一樣淘这,MySQL不會(huì)同步到磁盤(pán)中去而是依賴(lài)操作系統(tǒng)來(lái)刷新binary log剥扣。

當(dāng)sync_binlog =N (N>0) ,MySQL 在每寫(xiě)N次二進(jìn)制日志binary log時(shí)铝穷,會(huì)使用fdatasync()函數(shù)將它的寫(xiě)二進(jìn)制日志binary log同步到磁盤(pán)中去钠怯。當(dāng)innodb_flush_log_at_trx_commit和sync_binlog 都為 1 時(shí)是最安全的,在mysqld服務(wù)崩潰或者服務(wù)器主機(jī)crash的情況下曙聂,binary log只有可能丟失最多一個(gè)語(yǔ)句或者一個(gè)事務(wù)晦炊。但是魚(yú)與熊掌不可兼得,雙1會(huì)導(dǎo)致頻繁的IO操作宁脊,因此該模式也是最慢的一種方式断国。出于我們的業(yè)務(wù)考慮在業(yè)務(wù)壓力允許的情況下默認(rèn)的都是雙1配置。

log_slave_update

當(dāng)業(yè)務(wù)中需要使用級(jí)聯(lián)架構(gòu)的時(shí)候log_slave_update = 1這個(gè)參數(shù)必須打開(kāi)榆苞,否者第三級(jí)可能無(wú)法接收到第一級(jí)產(chǎn)生的binlog稳衬,從而無(wú)法進(jìn)行數(shù)據(jù)同步。

tmpdir

如果內(nèi)存臨時(shí)表超出了限制坐漏,MySQL就會(huì)自動(dòng)地把它轉(zhuǎn)化為基于磁盤(pán)的MyISAM表薄疚,存儲(chǔ)在指定的tmpdir目錄下.因此盡可能將tmpdir配置到性能好速度快的存儲(chǔ)設(shè)備上。

慢日志相關(guān)

<pre>slow_query_log = 1 #打開(kāi)慢日志
</pre>


PHP

進(jìn)程數(shù)

<pre>pm = dynamic

pm參數(shù)指定了進(jìn)程管理方式赊琳,有兩種可供選擇:static或dynamic街夭,從字面意思不難理解,為靜態(tài)或動(dòng)態(tài)方式躏筏。如果是靜態(tài)方式板丽,那么在php-fpm啟動(dòng)的時(shí)候就創(chuàng)建了指定數(shù)目的進(jìn)程,在運(yùn)行過(guò)程中不會(huì)再有變化(并不是真的就永遠(yuǎn)不變)趁尼;而動(dòng)態(tài)的則在運(yùn)行過(guò)程中動(dòng)態(tài)調(diào)整埃碱,當(dāng)然并不是無(wú)限制的創(chuàng)建新進(jìn)程,受pm.max_spare_servers參數(shù)影響酥泞;動(dòng)態(tài)適合小內(nèi)存機(jī)器乃正,靈活分配進(jìn)程,省內(nèi)存婶博。靜態(tài)適用于大內(nèi)存機(jī)器,動(dòng)態(tài)創(chuàng)建回收進(jìn)程對(duì)服務(wù)器資源也是一種消耗

pm.max_children = 24

static模式下創(chuàng)建的子進(jìn)程數(shù)或dynamic模式下同一時(shí)刻允許最大的php-fpm子進(jìn)程數(shù)量

pm.start_servers = 16

動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量

pm.min_spare_servers = 12

動(dòng)態(tài)方式下服務(wù)器空閑時(shí)最小php-fpm進(jìn)程數(shù)量

pm.max_spare_servers = 24

動(dòng)態(tài)方式下服務(wù)器空閑時(shí)最大php-fpm進(jìn)程數(shù)量

</pre>

一般php-fpm進(jìn)程占用20~30m左右的內(nèi)存就按30m算荧飞。如果單獨(dú)跑php-fpm凡人,動(dòng)態(tài)方式起始值可設(shè)置物理內(nèi)存Mem/30M。

最大處理請(qǐng)求數(shù)

<pre>pm.max_requests = 10240
</pre>

最大處理請(qǐng)求數(shù)是指一個(gè)php-fpm的worker進(jìn)程在處理多少個(gè)請(qǐng)求后就終止掉叹阔,master進(jìn)程會(huì)重新respawn一個(gè)新的挠轴,這個(gè)配置的主要目的是避免php解釋器或程序引用的第三方庫(kù)造成的內(nèi)存泄露。

最長(zhǎng)執(zhí)行時(shí)間

<pre>max_execution_time = 20
request_terminate_timeout = 20
</pre>

這個(gè)是用來(lái)處理因?yàn)镻HP執(zhí)行時(shí)間超長(zhǎng)而報(bào)502錯(cuò)誤的解決耳幢。這個(gè)時(shí)長(zhǎng)配置可以在php.ini(max_execution_time)或php-fpm.conf中配置均可岸晦,為了不影響全局配置欧啤,可在php-fpm.conf中實(shí)現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市启上,隨后出現(xiàn)的幾起案子邢隧,更是在濱河造成了極大的恐慌,老刑警劉巖冈在,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倒慧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡包券,警方通過(guò)查閱死者的電腦和手機(jī)纫谅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)溅固,“玉大人付秕,你說(shuō)我怎么就攤上這事∈坦” “怎么了询吴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)励幼。 經(jīng)常有香客問(wèn)我汰寓,道長(zhǎng),這世上最難降的妖魔是什么苹粟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任有滑,我火速辦了婚禮,結(jié)果婚禮上嵌削,老公的妹妹穿的比我還像新娘毛好。我一直安慰自己,他們只是感情好苛秕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布肌访。 她就那樣靜靜地躺著,像睡著了一般艇劫。 火紅的嫁衣襯著肌膚如雪吼驶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天店煞,我揣著相機(jī)與錄音蟹演,去河邊找鬼。 笑死顷蟀,一個(gè)胖子當(dāng)著我的面吹牛酒请,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸣个,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼羞反,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼布朦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昼窗,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤是趴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后膏秫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體右遭,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年缤削,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窘哈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亭敢,死狀恐怖滚婉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帅刀,我是刑警寧澤让腹,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站扣溺,受9級(jí)特大地震影響骇窍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锥余,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一腹纳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驱犹,春花似錦嘲恍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至医舆,卻和暖如春俘侠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔬将。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工爷速, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人娃胆。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像等曼,于是被迫代替她去往敵國(guó)和親里烦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凿蒜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 這篇是Nginx安裝配置PHP(FastCGI)環(huán)境的教程。Nginx不支持對(duì)外部程序的直接調(diào)用或者解析胁黑,所有的外...
    SkTj閱讀 3,085評(píng)論 2 20
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 1,993評(píng)論 0 9
  • 系統(tǒng)優(yōu)化 系統(tǒng)內(nèi)核優(yōu)化參考 Nginx配置優(yōu)化 Nginx配置參考 worker_processesnginx運(yùn)行...
    潘曉華Michael閱讀 5,992評(píng)論 0 19
  • (1)nginx運(yùn)行工作進(jìn)程個(gè)數(shù)废封,一般設(shè)置cpu的核心或者核心數(shù)x2**如果不了解cpu的核數(shù),可以top命令之后...
    小慕先森閱讀 2,080評(píng)論 0 0
  • 1.簡(jiǎn)介: ? Nginx:engine X 丧蘸,2002年漂洋,開(kāi)源,商業(yè)版? http協(xié)議:web服務(wù)器(類(lèi)似于ht...
    尛尛大尹閱讀 1,862評(píng)論 0 3