LAMP和LNMP深度优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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权限,此时更改下端口,再改下服务端口就行了。用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;分配4个64k缓冲区
13、隐藏或修改nginx 版本名称
在安装编译nginx之前到nginx的软件包里
vim /home/weipeng/tools/nginx-1.6.2/src/http/ngx_http_header_filter_module.c 进行修改:
以上是关于LAMP和LNMP深度优化的主要内容,如果未能解决你的问题,请参考以下文章