热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache和Nginx服务器如何优化效率和性能

nginx重要配置文件80---900088---9001worker_processes16;worker_rlimit_nofile100000;worker_connections65535;charsetutf-8;系统优化:打开文件数量应该与这个有关/etc/security/limits.conf*soft
nginx 重要配置文件
80 --- 9000
88 --- 9001
worker_processes  16;
worker_rlimit_nofile 100000;
worker_connections  65535;
charset utf-8;

系统优化:

打开文件数量应该与这个有关
/etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

 cat /proc/30835/limits
 ulimit -a
修改后重新登录即可生效

apache优化:

top -d 1 | grep httpd

编译mod_proxy.so.
[root@localhost httpd-2.2.4]# cd modules
[root@localhost modules]# /usr/local/apache/bin/apxs -c -i mod_proxy.c proxy_util.c

/usr/local/apache/conf/httpd.conf
打开
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

/usr/local/apache/conf/extra/httpd-mpm.conf

MaxClients n1
nSpareThreads n2
MaxSpareThreads n3
ThreadsPerChild n4
MaxRequestsPerChild n5

实例:

ServerLimit         10000
StartServers          256
MinSpareServers       64
    MaxSpareServers      192
MaxClients          10000
    MaxRequestsPerChild   0

当Apache启动时,Apache会启动StartServers个空闲进程同时准备接收处理请求,当多个请求到来时,StartServers进行会越来越少,当空闲进程减少到MinSpareServers个时,Apache为了能够继续有充裕的进程处理请求,它会再启动StartsServers个进程备用,这样就大大减少了请求队列等待的可能,使得服务效率提高,这也是为什么叫做Pre-fork的原因;让我们继续跟踪Apache的工作,我们假设Apache已经启动了200个进程来处理请求,理论上来说,此时Apache一共有205个进程,而过了一段时间,假设有100个请求都得到了Apache的响应和处理,那么此时这100个进程就被释放成为空闲进程,那么此时Apache有105个空闲进程。而对于服务而言,启动太多的空闲进程时没有任何意义的,反而会降低服务器的整体性能,那么Apache真的会有105个空闲进程么?当然不会!实际上Apache随时在检查自己,当发现有超过MaxSpareServers个空闲进程时,则会自动停止关闭一些进程,以保证空闲进程不过过多。说到这里,用户应该对Apache的工作方式有了一定的了解,如果想获得更多更详细的说明请参阅Apache手册文档。

测试apache配置是否正确
./apachectl configtest

 修改/usr/local/apache/conf/httpd.conf
添加:
hostnamelookups off
timeout 5
keepalive on
maxkeepaliverequests 1000
keepalivetimeout 10

serversignature off
servertokens prod
默认情况下,很多apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。

所以,请加入如下两条:

serversignature off

servertokens prod

serversignature 出现在apache所产生的像404页面、目录列表等页面的底部。
servertokens目录被用来判断apache会在server http响应包的头部填充什么信息。
如果把servertokens设为prod,
那么http响应包头就会被设置成:server:apache

#禁止在内存中缓冲日志(mod_log_config)
BufferedLogs Off

修改:
options -followsymlinks
符号连接:当打开这个选项时,apache将检查每个请求中是否包含对符号连接的引用,
这将对请求中包含的每个路径调用一次lstat()系统调用。除非你准备使用符号连接,
否则用 options -followsymlinks 来关掉它。

php.ini 优化
修改部分
max_execution_time    一个脚本可使用多少 CPU 秒     30
max_input_time    一个脚本等待输入数据的时间有多长(秒)    60
display_errors = Off
error_log = /var/log/php_log
memory_limit    在被取消之前,一个脚本可使用多少内存(字节)    32M
session.save_path = "/tmp"    去掉注释
output_buffering    数据发送给客户机之前,有多少数据(字节)需要缓存    4096

output_buffering = 0
; 输出缓冲区大小(字节)。建议值为4096~8192。
; 输出缓冲允许你甚至在输出正文内容之后再发送HTTP头(包括COOKIEs)。
; 其代价是输出层减慢一点点速度。
; 设置输出缓冲可以减少写入,有时还能减少网络数据包的发送。
; 这个参数的实际收益很大程度上取决于你使用的是什么Web服务器以及什么样的脚本。

disable_functiOns= passthru,exec,shell_exec,system,phpinfo,get_cfg_var,popen,chmod

参考资料
http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-2.html
http://lamp.linux.gov.cn/PHP/php-5_2-ini.html

test
ab -n 2000 -c 2000 http://socialmovie.innisfree.cn/main_innisfree.php

参考文章
http://blog.csdn.net/gulaizi/article/details/4012049
http://fanqiang.chinaunix.net/app/web/2007-02-08/5087.shtml
http://bbs.linuxtone.org/thread-40-1-1.html

apache缓存

http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=1670

  --enable-cache          dynamic file caching
  --enable-disk-cache     disk caching module
  --enable-mem-cache      memory caching module

缓存动态内容

CacheForceCompletion 100
CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.1

CacheEnable disk /
CacheRoot /home/wwwroot/
CacheSize 327680
CacheDirLength 4
CacheDirLevels 5
CacheGcInterval 4


CacheEnable mem /
MCacheSize 8192
MCacheMaxObjectCount 10000
MCacheMinObjectSize 1
MCacheMaxObjectSize 51200

参数的解释

mod_cache.c
CacheEnable: 启动mod_cache其后接两个参数。第一个参数指定快取的种类,应设为mem(记忆体快取)或disk(磁碟快取)之其一;第二个参数指定使用快取的URI路径,如果对整个网站(或虚拟主机)进行快取,简单指定为根目录(/)即可。
CacheForceCompletion: 指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)。
CacheDefaultExpire:   指定快取的预设过期秒数;预设值是一小时 (3600)。
CacheMaxExpire:       指定快取最大的过期秒数;预设值是一天 (86400)。
CacheLastModifiedFactor: 用来从回应里 Last Modified 资讯算出 expire date。

mod_disk_cache.c
CacheRoot:       指定磁碟快取所使用的目录。
CacheSize:       指定快取使用的磁碟空间大小;以 KByte 为单位。
CacheDirLength: 指定各目录存在于快取?层(hierarchy) 中所使用的字元数。
CacheDirLevels: 指定快取的目录层数; CacheDirLength,acheDirLevels设定值相乘不能超过 20。
CacheGcInterval: 指定收垃圾 (Garbage Collection) 的动作间隔时间;单位是小时。Apache2 中这个指令还?有被实在。

mod_mem_cache.c
MCacheMaxObjectCount     最大缓存对象数;默认值1009。
MCacheMaxObjectSize      缓存允许的最大文档大小;默认值10000。
MCacheMaxStreamingBuffer 内存中允许缓冲的最大流式响应字节长度;默认值100000与MCacheMaxObjectSize中的小者。
MCacheMinObjectSize      允许缓存的最小文档大小;默认值 0。
MCacheRemovalAlgorithm   定义在需要时哪个文档被移出缓存的算法;默认值 LRU|GDSF。
MCacheSize               允许使用的最大内存量;以KB为单位默认值100。


推荐阅读
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
author-avatar
Super小泰森_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有