1. 程式人生 > >LAMP和LNMP深度優化

LAMP和LNMP深度優化

互聯網

LAMPLNMP web架構深度優化

企業連接數據庫一般用域名,因為連接數據庫的文件可能有多個,那麽當一旦數據庫ip改了,那麽數據庫連接的文件也都需要修改,這樣極容易漏掉而出現錯誤,正確的做法是每個數據庫連接文件裏都寫連接數據庫的域名,然後在本地host裏將數據庫ip及域名做一個解析

數據庫tar備份數據文件

必須停機才能保持備份的數據庫和線上的一致,那麽企業是不可能隨意停機的,所以一般會用到熱備工具如mysqldump等進行實時同步備份。

必須要總結的:

nginx.conf httpd.conf httpd-vhosts.conf httpd-mpm.conf my.cnf php.ini php-fpm.conf

1、隱藏nginx header

vi /application/nginx/conf/nginx.conf

http {

server_tokens off 添加此行

}

隱藏apache header

vim /application/apache/conf/extra/httpd-default.conf

Serverfokens Prod

ServerSi gnature Off 添加這兩行

2、更改nginx的用戶組

在配置文件nginx.conf裏將user nobody改為其他的。nginx默認主進程master processroot用戶,可改動則需要更改nginx的端口,因為80端口默認需要root

權限,此時更改下端口,再改下服務端口就行了。用root用戶提供web對外服務非常危險,用戶可上傳很多東西把網站給覆蓋掉,支付寶就是把所有服務跑在普通用戶下。

3、修改nginx worker進程個數

一般高並發場景,但多了就有問題會卡,就會加大服務成本,默認worker_processes=1,

可按cpu核數來給,nginx.conf配置文件裏改。查cpu cat /proc/cpuinfo

4、平均分配資源到不同cpu

默認情況nginx的多個進程可能更多的跑在一顆cpu上,修改方法添加worker_cpu_affinity 0001 0010 0100 1000 每個worke processes分配到獨立的cpu上。

top命令按1可查看cpu個數占用情況或grep physical id /proc/cpuinfo。最後可以實測一下用壓力工具webbench -c 20000 -t 180 http://x.x.x.x

5、taskset

設置cpu親和力,比如讓myslq跑在前三顆cpu上:taskset -c 1,2,3 /etc/init.d/mysql start

6、事件處理模型

在配置文件裏將events字段添加為:use epoll;改為epoll模型。高並發軟件如memcache都支持epoll模型。

7、修改worker_connections連接數

其實它意思是一個work進程數的連接數,可以改為4096即可。太大的話連接的用戶過多也容易把服務器壓垮。

8、優化服務器名字的hash表大小

server_names_hash_bucket_size 64

9、開啟高效文件傳輸模式

sendfile on

tcp_nopush on

10、設置連接超時時間

3s以內網站的打開時用戶對網站最佳的忍耐時間,大門戶網站會有首屏,先打開一部分讓用戶看到,設置超時時間keepalive_timeout 60;

tcp_nodelay on;打開了keepalive參數後才有效。client_header_timeout 15;

php服務希望短連接,java希望長連接,因為java建立連接很消耗資源,而php很快。

client_header_timeout 15;客戶端進來之後都不搞事會消耗資源。client_body_timeout 15

11、上傳文件大小限制

client_max_body_size 10m;默認是2m

限制客戶端請求多大的內容

12、fastcgi調優

fastcgi_connext_timeout 300

fastcgi_send_timeout 300

fastcgi_read_timeout 300

fastcgi_buffer_timeout 64k


fastcgi_ buffers 4 64k;分配464k緩沖區

13、隱藏或修改nginx 版本名稱

在安裝編譯nginx之前到nginx的軟件包裏

vim /home/weipeng/tools/nginx-1.6.2/src/http/ngx_http_header_filter_module.c 進行修改:技術分享


LAMP和LNMP深度優化