设为首页 收藏本站
查看: 589|回复: 0

LNMP优化

[复制链接]

尚未签到

发表于 2015-8-21 10:39:27 | 显示全部楼层 |阅读模式
LNMP优化
LNMP优化从系统安全,系统资源占用率,及web服务并发负载这三个方面体现,并

且主要体现在web服务并发负载这一方面。


1:首先进行linux优化加固
Linux优化加固最好的办法就是提升硬件配置,比如提高CPU运算能力,增大内存

容量,提高硬盘吞吐率等。
本文谈的Linux优化加固是在不提升硬件配置的情况下,通过优化内核配置,从而

提高linux服务效率,从三个方面进行:安全加固、内核调优、优化网络,本文主

要讲解内核调优及网络优化。

a):优化linux 启动项
使用ntsysv工具将不需要的服务关闭,进行优化,默认启动服务可以只保留以下六

项必要服务:
iptables sshd crond syslog network messagebus.同时也要保留nginx、mysql

、php默认启动

b):安全加固
Linux安全加固主要针对iptables进行,控制所有INPUT数据包,除了必要的端口

打开之外,其余的端口一律关闭。禁用用户ping服务器等会更加安全


c):网络优化
一般情况下,Nginx通过TCP socket来连接客户端与上游应用,默认安装的系统对

TCP有许多门限值与限制,通过内核参数来设定。这些参数的默认值往往是为一般

的用途而定的,并不能满足web服务器所需的高流量、短生命的要求。
对于网络参数调优可以修改 /etc/sysctl.conf这个文件。修改完之后使用

#sysctl –p 让内核配置生效。


2 进行nginx优化
修改 # vi nginx/conf/nginx.conf
a)增加nginx工作进程数并绑定到不同的CPU上,本文所用的硬件有4个CPU,顾开

辟4个进程,如下:
worker_processes  4;
worker_cpu_affinity 0001 0010 0100 1000; #绑定进程和CPU对应

b) 增加每个进程打开文件句柄数,理论值应该是最多打开文件数(ulimit -n)

与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n

的值保持相当。
       worker_rlimit_nofile50000;


c)采用epoll 模式,并增大每个进程连接数限制:
    events {
    use epoll;  //异步非阻塞I/O模型
    worker_connections 204800;
}
   
d)设置客户端请求头部缓冲区大小为系统分页大小的整数倍,可以用命令查看系

统分页大小:# getconf PAGESIZE 。如果经常出现 400错误,则和值有关,调大

即可。
    http{
client_header_buffer_size   4k;
       large_client_header_buffers  44k;
}

e)打开请求文件缓存
    http{
    open_file_cachemax=102400 inactive=60s;
    说明:打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和

打开文件数一致,inactive 是指经过60s时间文件没被请求后删除缓存。
    open_file_cache_valid80s;
说明:80s 检查一次缓存的有效信息。
open_file_cache_min_uses 1;
说明:文件使用次数,判断有效与否。inactive 时间内一次没被使用,它将被移

除。
}

3:进行mysql优化
提升mysql性能需要从三个方面着手,首先是硬件,提升硬件配置效果最明显;其
次是mysql参数配置优化;还有数据读写架构优化。主要讲mysql参数配置优
化,顺便解释一下硬件配置和程序中使用mysql架构优化问题。
对于硬件配置这不用说,任何服务都是基于硬件之上的,提升硬件配置,原则上
会提升服务效率,比如使用更大内存,使用磁盘高级raid,数据分区使用固态IO
卡,使用xfs文件系统等。
对于mysql架构设计优化,这个非常重要,sql语句优化,表存储引擎(MyISAM,
InnoDB)选择,使用索引,增加redis或者memcached缓存层等。将传统web服务的

2层架构(webserver+db)变成三层架构(webserver+cache+db)甚至四层架构

(webserver+logicserver+cache+db),由cache来承担分流大并发读写操作。

对于存储引擎选择有2个原则:第一个原则,大量读少量写 选用MyISAM,大量写

少量读选用InnoDB。针对不同的需求使用不同的存储引擎。第二个原则,能不用

InnoDB尽量不用InnoDB。总之,如果你想追求99.9%的稳定性,方便的扩展性和高

可用性还是尽量用MyISAM吧。
至于为什么呢?
1  MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就

对应提高了不少。能加载更多索引,而InnoDB是索引和数据是紧密捆绑的,没有

使用压缩从而会造成InnoDB比MyISAM体积庞大不少。
2 InnoDB的行级锁是相对的,那个只有where主键时是有效,非主键的都
会锁全表的。如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表
同样会锁全表,例如update table set num=1 where name like “�a%”

3 MyISAM相对简单所以在效率上要优于InnoDB。小型应用使用MyISAM是不
错的选择。另外,MyISAM表是保存成文件的形式,在跨平台的数据转移很方便。
总之,尽量不使用InnoDB,InnoDB主要用于需要外键,事务等企业级支持,代价
是速度比MyISAM有倍数的下降。

取自牛人博客地址(详细参考):http://blog.iyunv.com/yybjroam05/article/details/19074389

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-102105-1-1.html 上篇帖子: centos6.6编译安装lnmp系列之PHP 下篇帖子: LNMP卸载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表