zoukankan      html  css  js  c++  java
  • 谈谈lnmp都有哪些优化

    什么是lnmp

    l表示linux系统,n表示nginx,m表示mysql, p代表php

    首先说说linux系统优化(14项优化)

    1、不要使用root登录管理系统,而是以普通用户身份登陆,通过sudo授权

    2、更改默认的远程连接ssh服务器端口,禁止root用户远程连接

    3、定时自动更新服务器的时间,使其与互联网时间同步

    4、配置yum源,从国内源下载安装软件包

    5、关闭selinux

    6、调整文件描述符,进程及文件的打开都会消耗文件描述符数量(默认1024, 生产环境一般不够)

    7、定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满

    8、精简开机服务(关闭没必要的服务)

    9、linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效

    10、锁定关键系统文件(如/etc/passwd,/etc/group,/etc/shadow等文件

    11、更改系统字符集防止乱码“zh_CN.UTF-8”,使其支持中文

    12、清空/etc/issue、/etc/issue.net,去除系统及内核版本登陆前的屏幕显示

    13、清除多余的系统虚拟用户账号

    14、为grup引导菜单加密码

    nginx优化

    1、隐藏Nginx版本号信息

    2、更改Nginx服务的默认用户

    3、优化Nginx服务的worker进程个数

    4、优化绑定不同的Nginx进程到不同CPU上

    5、Nginx事件处理模型优化

    6、调整Nginx单个进程允许的客户端最大连接数

    7、配置Nginx worker进程最大打开文件数

    8、开启高效文件传输模式

    9、优化Nginx连接参数调整连接超时时间

    10、上传文件大小(http Request body size)的限制

    11、fastcgi相关参数调优(配合PHP引擎动态服务)

    12、配置Nginx gzip压缩实现性能优化

    13、配置Nginx expires缓存实现性能优化

    14、Nginx日志相关优化

    15、Nginx站点目录及文件URL访问控制

    16、限制网站来源IP访问 

    17、配置Nginx禁止非法域名解析访问企业网站

    18、Nginx图片及目录防盗链解决

    19、错误页面优雅显示

    20、Nginx站点目录文件及目录权限优化

    21、Nginx防爬虫优化

    22、利用Nginx限制HTTP的请求方法

    23、使用CDN做网站加速

    24、使用普通用户启动Nginx(监牢模式)

    25、控制Nginx并发连接数

    26、控制客户端请求Nginx的速率

    Mysql优化

    MYSQL优化主要分为以下四大方面:

    设计:存储引擎,字段类型,范式与逆范式

    功能:索引,缓存,分区分表。

    架构:主从复制,读写分离,负载均衡。

    具体优化:https://www.cnblogs.com/sharpest/p/10390035.html

    PHP服务缓存加速优化

    1.操作码介绍及缓存原理

        当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate Code,opcode)该文件是执行PHP代码后的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。而操作码缓存(Opcode cache)的原理就是讲编译后的操作码保存下来,冰岛共享内存里,以便在下一次调用该PHP页面时重用它,避免了相同代码的重复编译。节省了PHP引擎重复编译的时间,降低了服务器负载,同时减少了CPU和内存开销。加速性能可以达到2-10倍

    2.PHP缓存加速软件介绍

        为了提高PHP引擎的高并发访问及执行速度,产生了一系列PHP缓存及加速软件。这些软件设置的目的就是缓存PHP引擎解析过的操作码文件,以便在指定时间内有相同的PHP程序请求访问时,不再需要重复解析编译,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业网站的整体体验。

    3、LNMP环境PHP缓存加速器原理详解

       在LNMP环境中,PHP引擎不再使用libphp5.so模块了,而是启动了独立的FCGI即php-fpm进程,由它监听来自nginx的PHP程序请求,并交给PHP引擎解析处理,整个执行流程大概如下:
      1)Nginx接收客户端的PHP程序访问请求。
      2)Nginx根据扩展名等过滤规则将PHP程序请求传递给解析PHP的FCGI进程(PHP-FPM)
      3)PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。
      4)PHP解析器将PHP程序编译为opcode文件,然后把opcode缓存起来。
      5)PHP FPM引擎执行opcode树,返回数据给Nginx,进而返回客户端。
      6)Nginx 接收客户新的PHP程序请求,PHP FPM引擎就会直接读取缓存中的opcode执行,将结果返回,该过程中无需第4步操作,从而提升了PHP编译解析效率。
     

    4、PHP缓存加速器软件种类及选择建议

      PHP缓存加速器软件常见的种类有xcache、eaccelerator、APC(Altemative PHP Cache)、ZendOpache等。
      建议根据企业的业务需求及选择前的压力测试结果,或者根据个人的经验偏好选择。不过建议首选xcache,其次是eaccelarator,如果想使用新款,可以选择ZendOpcache。

      首选xcache的原因如下:

      1.经过测试xcache效率更好,更快
      2.xcache软件开发社区更活跃。
      3.支持更好版本的PHP,例如PHP5.5、PHP5.6

     次选eaccelerator的原因如下:

      1、安装及配置参数更简单,加速效果也不错
      2、文档资料较多,但官方对软件的更新很慢,社区不活跃
      3、仅适合PHP版本5.4以下的程序

     选择ZendOpcache的原因如下

      1.是PHP官方研发的新一代缓存加速软件,以后的发展潜力可能会很好,PHP5.5以前的版本可以通过ZendOpcode软件以插件扩展的方式安装,从PHP5.5版本开始已经整合到PHP软件里了,编译时只需指定一个参数即可,例如:–enable-opcache
      2、ZendOpcache可能是未来的缓存加速首选,现在的稳定性还有待检验,小规模环境下PHP5以前的版本可以通过插件式安装使用,PHP5以上的版本可以直接指定参数编译使用,若可以热手ZendOpcache的各种未知问题的话,可以尝试使用。
     
  • 相关阅读:
    不用IDE写C#的Hello World
    .NET中常见的内存泄露问题——GC、委托事件和弱引用
    .net微信公众号开发——群发消息
    C#线程同步方法汇总
    C#访问远程主机资源的方法
    Python实例---模拟微信网页登录(day1)
    github入门到上传本地项目
    Python学习--Selenium模块
    Python学习--打码平台
    Python学习--Selenium模块学习(2)
  • 原文地址:https://www.cnblogs.com/HByang/p/13690148.html
Copyright © 2011-2022 走看看