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

配置Apache1.3或者Apache2.0服务器的5个技巧

apachectlstatus命令是检查服务器状态的快捷道路。假如该命令的输出成果并没有始终如一的显示出可用的工作过程。那么最好增大MinSpareServers或者MinSpareThreads值(在Apache2.0采用线程化MPM的情况下)。同时你可能还需要增大MaxClients值。
本文提出了配置Apache 1.3或者Apache 2.0服务器的5个技巧。我们将论述以下的配置计划:调剂Apache的accept()串行化、Apache 2.0线程、采用mod_ssl的SSL会话缓存、优化keep-alive超时值以及检查服务器负载以平衡服务器可处理的恳求量等。
AcceptMutex

Apache 1.3.21和Apache 2.0中引进了AcceptMutex 唆使符,该唆使符给调节服务器的性能带来了一个难得的机会。该唆使符配置Apache的accept()处理方法。在某些只有一个侦听器的系统上是不需要接收阻塞的。这就叫Single Listen Unserialized Accept (SLUA)。可是,对那些具有多个侦听器的配置或者在接收系统调用函数上(不管有多少个侦听器)存在thundering herd标题的把持系统上,连接接收程序就必需进行串行化了。

Covalent的Sander Temme对accept()阻塞策略进行了必定程度的性能分析。这份报告总结了Apache 1.3.21在这一方面的有关调剂策略,如下所示:

  • Irix的uslock (uslock)
  • POSIX跨过程阻塞 (pthread)
  • SystemV Semaphores (sysvsem)
  • fcntl()阻塞(fcntl)
  • flock()阻塞 (flock)
  • OS/2 Semaphores (os2sem)
  • TPF 阻塞 (tpfcore)
  • None(无)

尽管采用AcceptMutex none也是可能的,但是你的系统在这种配置下有可能受到thundering herd标题和逝世锁的困扰。这些标题会导致服务器减慢处理速度乃至结束响应。none选项尽对不能用在实际系统上。在非正式的测试下,pthread锁应当是最好的解决计划。然而,pthread跨过程阻塞并不是所有系统都可用的。

采用2.0版和线程(worker MPM)

Apache 2.0有一个明显的改良特征就是支撑线程。某些把持系统,比如Solaris,在采用线程技巧的条件下可以明显地改良系统性能。而其他把持系统,比如Linux,其性能改良就可能并不是很明显。

在采用Apache 2.0的情况下,处理恳求的策略已经理论化了,这就是所谓的MPM:多过程模式(Multi Process Model)。而老一些的Apache 1.3模式则以prefork MPM为代表,在Unix平台上就是默认MPM for 2.0 。在这种模式下有一个独立的过程处理每一恳求。可是,假如你编译Apache 2.0的时候带 --with-mpm=worker 选项,那么服务器恳求就会由线程来处理。这种方法在精心设计线程实现计划的情况下会大大下降把持系统处理恳求的负载。

SSL会话缓存

假如你对Apache 1.3或者在Apache 2.0采用了mod_ssl补充插件(在在Apache 2.0中则已经包含在内),那么你可以采用会话缓存晋升系统性能。这种改良会明显下降SSL连接负载。设置会话缓存有三种道路:

  • DBM (dbm),这是一种在磁盘上存储项目标常用格局(htpasswd可以DBM格局存储密码) 

  • 共享内存循环缓存(shm 或者shmcb)
  • 共享内存哈系表(shmht)
  • 在采用以上选项的时候需要指定文件路径。在应用DBM变量的情况下,文件将被写进磁盘。而对共享内存变量来说,文件将被用做把持系统优选共享内存机制的存储备份。值得留心的是,大多数把持系统不答应共享内存段建立在通过网络装载(mount)的驱动器上,比如NFS等,所以必需给服务器供给文件路径。

    我们建议你采用共享内存,不过,在那些没有共享内存的平台上则不妨采用DBM计划。


    SSL会话缓存的更多信息和有关语法请见:
    • modssl.org
    • Apache.org

    KeepAliveTimeout

    假设某位用户在浏览网站上的某一网页,然后它单击某一导向站内另一网页的链接。假如这一过程产生在KeepAliveTimeout 周期之内(默认为15秒),那么就不必创立新的TCP服务器连接。这样做大大减少了盘算机的负载。然而,在这一时间区域内服务器也不能处理更多的恳求。KeepAliveTimeout周期过后,服务器才可以处理来自不同客户机的最新恳求。因此,你必需增加恳求过程或者线程的数目以满足空闲恳求的需要。这个值应当进行仔细的调剂以达到最佳状态。

    采用mod_status

    采用mod_status检查服务器负载情况可以从中获得调剂服务器性能的重要信息。

    apachectl status命令是检查服务器状态的快捷道路。假如该命令的输出成果并没有始终如一的显示出可用的工作过程。那么最好增大MinSpareServers或者MinSpareThreads值(在Apache 2.0采用线程化MPM的情况下)。同时你可能还需要增大MaxClients值。


    有关mod_status和Apache模块mpm_common的更多信息请参考mod_status 和mpm_common 。

    小结

    你完整可以采用本文提出的技巧使服务器的性能最大化同时保持网站的正常运行。


    推荐阅读
    • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
      PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
    • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
    • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
    • 如何在Linux系统中实施网络流量监测与分析
      本文详细介绍了在Linux系统中实施网络流量监测与分析的方法。通过使用专业的工具和技术,读者可以有效地监控和分析网络流量,从而提高系统的安全性和性能。希望本文能为读者提供有价值的参考和实践指导。 ... [详细]
    • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
      在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
    • 《软件测试精要》深度解析与实战经验分享
      《软件测试精要》深度解析与实战经验分享,系统梳理了软件测试的核心概念与关键原则,结合实际项目中的测试经验和教训,详细探讨了测试分类、测试权衡要素、测试效率、测试覆盖率以及测试框架的引入和用例设计等内容,为读者提供了全面而实用的指导。 ... [详细]
    • 本文详细介绍了如何在 Grafana 中独立于 Alertmanager 配置邮件和微信告警。具体步骤包括配置 SMTP 服务器以实现邮件告警,以及设置微信告警的集成方式。通过这些配置,用户可以更灵活地管理和接收来自 Grafana 的告警通知,确保及时响应系统异常。文章还提供了详细的配置示例和常见问题的解决方案,帮助用户顺利完成设置。 ... [详细]
    • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
    • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
    • 从无到有,构建个人专属的操作系统解决方案
      操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
    • 在Linux系统中,目录结构遵循文件系统层次标准(FHS),确保了系统的组织性和可维护性。其中,`/bin`目录是FHS要求必须存在的目录之一,主要存放了在单用户维护模式下仍可执行的基本命令和工具。这些命令不仅对root用户可用,普通用户也能使用,以确保系统在最小化运行状态下仍能进行基本的操作和管理。 ... [详细]
    • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
    • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
      技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
    • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
    • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
      开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
    author-avatar
    手机用户2502904917
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有