LAMP和LNMP深度優化
LAMP與LNMP 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 process是root用戶,可改動則需要更改nginx的端口,因為80端口默認需要root
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上。
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;分配4個64k緩沖區
13、隱藏或修改nginx 版本名稱
在安裝編譯nginx之前到nginx的軟件包裏
vim /home/weipeng/tools/nginx-1.6.2/src/http/ngx_http_header_filter_module.c 進行修改:
LAMP和LNMP深度優化