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.csdn.net/yybjroam05/article/details/19074389
   

LNMP优化的更多相关文章

  1. 军哥LNMP优化

    http://bbs.vpser.net/thread-8914-1-1.html http://www.zxsdw.com/index.php/archives/881/ 修改/usr/local/ ...

  2. lnmp 优化

    一,版本信息优化 重启 直接更改版本号: 在源码包里改 第二个要改的地方 第三个需要更改的 改完后编译安装,下次我直接写进编译脚本上

  3. 深度优化LNMP

    优化前准备工作 Centos准备及配置 准备安装包及软件:http://pan.baidu.com/s/1chHQF  下载解压到U盘即可安装http://pan.baidu.com/s/15TUWf ...

  4. LNMP 常见问题(FAQ)

    常见问题(FAQ)常见问题关键词快速索引 我们为什么需要采用LNMP架构?原因不在重复,请看:关于 LNMP一键安装包支持哪些Linux发行版?目前支持CentOS(RadHat).Debian.Ub ...

  5. Linux运维就业技术指导(九)期末架构考核

    一,毕业架构设计考核筹备 1.1,架构图模板示例 1.1.1 架构图(一)概述 本架构是4层lvs负载均衡给后方7层nginx反向代理: 业务进行了动静分离: 数据库前端有memcached缓存组,降 ...

  6. lnmp全面优化集合nginx+mysql+php

    lnmp的全名是linux+nginx+mysql+php,既然是全面优化那我们就从linux系统的选择入手.debian系统可以算是 linux各分支中做的比较突出的一类,连谷歌都抛弃linux订制 ...

  7. 深度优化LNMP之Nginx [2]

    深度优化LNMP之Nginx [2]   配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍        Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求 ...

  8. 深度优化LNMP之Nginx (转)

    深度优化LNMP之Nginx Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息     一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例 ...

  9. 深度优化LNMP之PHP (转)

    深度优化LNMP之PHP   PHP缓存加速介绍   1.操作码介绍及缓存原理     当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate ...

随机推荐

  1. Create new Android Virtual Device时不能创建

    在Create new Android Virtual Device时不能创建... 因为之前有重装过系统,ADT和java都没有更换,不知道是不是有哪里的环境(C盘中的配置)出错了... LOG在下 ...

  2. C#中静态构造函数含义及使用

    static以前都接触过,可是最近才发现了还有静态类的写法,也可能是以前没太注意了,所以自己去研究了一下! 1.什么是构造函数: 1.1 例如:static  Class{} 1.2 使用静态函数的注 ...

  3. 字符串编码---hash函数的应用

    之前就听说过有个叫做hash表的东西,这段时间在上信息论与编码,也接触了一些关于编码的概念,直到今天做百度之星的初赛的d题时,才第一次开始学并用hash 一开始我用的是mutimap和mutiset, ...

  4. ZOJ3555 Ice Climber(dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Ice Climber Time Limit: 2 Seconds      Me ...

  5. Go语言之异常处理

    在编写Go语言代码的时候,我们应该习惯使用error类型值来表明非正常的状态.作为惯用法,在Go语言标准库代码包中的很多函数和方法也会以返回error类型值来表明错误状态及其详细信息. error是一 ...

  6. 16--Box2D使用(二、显示物理世界)

    在上一篇文章中我们创建了的一个物理世界,当物理世界中的刚体一个也没有显示出来.为显示物理世界中的物体,我们需要引入GLES-Render(调试Box2D使用).这两个文件可以再 %Cocos_Home ...

  7. jsonp跨域请求学习笔记

    前言 ajax,用苍白的话赞扬:很好. 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大地改善用户体验:我们可以使用ajax实现小系统组合大系统:我们还可以使用ajax实现前端的优化.( ...

  8. 给大家推荐几款OSX上非常好工具(针对程序员)

    前两天,在App Store无意中发现几款免费工具,感觉非常好用,推荐给大家,希望大家喜欢. 一个是帮助文档管理软件,Dash.以前在Windows上开发,经常要自己搜集一些手册,文档,什么html手 ...

  9. Python中*和**的用法

    好久不用Python,今天在用Python写个小工具的时候发现好些东西都快忘记了,特别是*和**. 什么情况下使用*和**呢(不是C里面的指针哦!) 当函数的参数不确定时,可以使用*args 和**k ...

  10. JNI学习&使用过程中的错误

    Part 1 Ubuntu下JNI的简单使用: http://blog.csdn.net/fengqiaoyebo2008/article/details/6210499 Part 2 在eclips ...