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

为什么ApacheEventMPM表现不佳?

如何解决《为什么ApacheEventMPM表现不佳?》经验,为你挑选了2个好方法。

事件MPM与Nginx的设计并不完全相同,但显然旨在使Keepalive更加稳定并更快地发送静态文件.我的理解是事件MPM有点用词不当,因为:

    虽然连接传递给kqueue/epoll,

    某些非常重要的模块,如mod_gzip和mod_ssl,将阻塞/使用一个线程,直到响应完成,

    这对于大型文件来说是一个问题,但可能不适用于PHP生成的HTML文档等.

不幸的是,Apache一直在失去市场份额,大多数基准测试都是MPM事件的诅咒.基准测试是否存在缺陷,或者事件MPM对Nginx的影响是否真的如此糟糕?即使有这些限制,在正常流量(非恶意)和较小的文件下,它应该与Nginx有一定的竞争力.例如,它应该在慢速连接上通过php-fpm为PHP生成的文档提供竞争,因为文档将被缓冲(即使是ssl'd和gzip)并且是异步发送的.使用压缩或不使用压缩的SSL和非SSL连接的工作方式与Nginx在此类工作负载上的工作方式不同.

那为什么它不会在各种基准测试中闪耀?它出什么问题了?或者基准测试有什么问题?是一个主要的网站使用它作为它可以执行的权威的诉求?



1> Ben Grimm..:

它比nginx慢,因为带有事件MPM的Apache(非常)大致相当于Apache与工作者MPM之前的事件驱动的HTTP代理(nginx,varnish,haproxy).事件工作者,但事件MPM的线程将连接交给一个辅助线程,将其推送到队列或关闭它,如果keep-alive关闭或已经过期,而不是将每个新连接交给一个线程.

事件优于工人的真正好处是资源使用.如果需要维持1,000个并发连接,则worker MPM需要1,000个线程,而事件MPM可能会在事件队列中管理100个活动线程和900个空闲连接.事件MPM将在该假设中使用工作者MPM的一小部分资源,但缺点仍然存在:每个请求都由一个必须由内核调度的单独线程处理,因此将产生转换背景.

另一方面,我们有nginx,它使用事件模型本身作为其调度程序.Nginx只需处理每个连接上的尽可能多的工作,然后再继续下一个连接.无需额外的上下文切换.

事件MPM真正发挥作用的一个用例是处理在Apache中运行繁重应用程序的设置,并且为了节省在保持活动期间空闲的线程的资源,您将部署代理(例如nginx)在阿帕奇面前.如果您的前端没有其他用途(例如静态内容,代理到其他服务器等等),MPM事件可以很好地处理该用例并且无需代理.



2> covener..:

对我而言,主要的手术差异在于:

处理程序(负责生成响应的插件)是同步的-如果它们执行计算或I / O,它们将占用线程

内核必须使用跨线程锁来保护关键数据结构,因为它是多线程的,以支持许多此类同步请求

这就是为什么在大批量交易中,诸如nginx(或Apache Traffic Server或任何现代商业/高性能代理)之类的服务器通常会领先的原因。

IMO您问题中的项目符号有点离谱,SSL和deflate并没有真正为此处的差异做出太大贡献,因为它们都是过滤器,它们并没有真正导致可伸缩性问题,甚至没有将httpd与其传统的API保证相关联请求或连接的生命周期。此类过滤器(与处理程序或负责低级I / O的核心过滤器相比)可能是与处理模型联系最少的东西。

但我也认为,除了最极端的工作负载或极为受限制的系统之外,对于所有其他产品而言,它的性能都不会如此差。由于某种原因,我见过的大多数基准测试质量都很差。

我认为大部分人都希望今天所谓的Web服务器成为更复杂的应用程序服务器(Java EE,PHP等)的代理,而旨在最高效地移动I / O而又不占用API的服务器将具有优势。


推荐阅读
  • 本文目录一览:1、如何搭建php服务器2、如何 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • HTTPProxy是一个中间程序,它既可以担当浏览器(客户端)的角色也可以担当WebServer(服务器)的角色。HTTPProxy代表浏览器向WebServer发送请求,浏览 ... [详细]
  • HTTP协议之总结展望篇
    文章目录HTTP2HTTP2内核HTTP3Nginx:高性能的Web服务器OpenResty:更灵活的Web服务器网络应用防火墙(WAF)CDN ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 主存同步mysql_MySQL阶段五——主从复制原理、主从延迟原理与解决
    MySQL主从复制原理、主从延迟原理与解决MySQL主从复制画图描述:MySQL主从复制原理上图详解:①用户做crud操作,写入数据库&# ... [详细]
author-avatar
殷小苗_535
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有