前几天,我们就接到其他应用负责人的电话,说我们rate应用的http响应超时,导致页面上调用他们json接口的数据也显示很慢。
观察一下,大吃一惊。
随便打开一张商品的页面,其中的两个json接口超时非常严重,分别是9秒,10秒。
再看看监控工具中统计出来的响应时间,如下图:
在高峰期,响应时间都快到5秒了。严重影响到了用户体验。
再看看取数据接口的性能:
即使是从数据库取数据,平均时间连1.5毫秒都不到。这里根本不会是瓶颈。于是把问题定位到了Apache。Http请求过多,导致响应过慢。
之前,httpd.cnf的配置是这样的:
=============================================================
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 10
<IfModule worker.c>
StartServers 5
MaxClients 1024
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 64
ThreadLimit 128
ServerLimit 16
</IfModule>
=============================================================
MaxClients=1024,表示一个apahce最多只能处理1024个请求。其余的http请求都是浮云,需要等待。
MaxClients的值是由ThreadsPerChild(每个子进程的线程数量) 和ServerLimit(子进程数量)决定的。
MaxClients = ThreadsPerChild * ServerLimit
如果你把MaxClient设为2048,ThreadsPerChild * ServerLimit还是等于1024,是没有效果的。
在这次优化中,我们把MaxClient设为2048, ThreadsPerChild设为64, ServerLimit设为32
MaxSpareThreads表示最多的空闲线程数。一个请求过来,如果线程池里有现成的线程,就直接处理该
请求,否则创建新的线程。在高峰期rate有200多的tps,最多75个空闲线程显然太少了。
于是我们把这个值设为250。
KeepAlive表示HTTP的一次连接,可以进行多次传输。 在rate应用的http场景里,json接口对apache的压力是最大的。
其中一个json接口一天要被访问1700多万次。Json接口一个特性就是只取数据,没有接下来的交互动作。于是我们就把
KeepAlive设为off。
最后的httpd.cnf配置是这样的:
=============================================================
Timeout 30
KeepAlive off
MaxKeepAliveRequests 100
KeepAliveTimeout 10
<IfModule worker.c>
ServerLimit 32
StartServers 3
MaxClients 2048
MinSpareThreads 25
MaxSpareThreads 250
ThreadsPerChild 64
</IfModule>
=============================================================
看看修改后的效果:
左边的红框框表示昨天的高峰期响应时间,右边表示今天的高峰期响应时间。
优化后的效果是非常非常的明显。
最后看看系统的load:
我们的load比昨天有明显地提高。这是正常的,因为apahce的进程、线程多了。
by 毛导
- 大小: 13.6 KB
- 大小: 31 KB
- 大小: 11.3 KB
- 大小: 14.5 KB
- 大小: 32.7 KB
- 大小: 39.6 KB
分享到:
相关推荐
优化数据库大幅度提高Oracle的性能,几个简单的步骤大幅提高Oracle性能--我优化数据库的三板斧。
在Web应用的开发过程中,选择一个好的编程模型,不仅会大幅度的减少开发的工作量,也会为以后整个系统的维护和升级打下一个坚实的基础。本系列文章结合一个典型的编程模型,介绍了Java在Web应用开发的各个环节中的...
智能天线基带幅度加权波束赋形及其CDMA 应用性能分析pdf,智能天线基带幅度加权波束赋形及其CDMA 应用性能分析
替代了原来的2800台服务器 集中管理和部署三大云平台,标准化了开发技术和操作流程,提高了效率 大幅度降低了应用开发和维护的成本,三年中运营性成本总体减少了35%,项目成本总体减少了30% 为关键应用提供了高可用...
一、前言 潮州三环(集团)股份有限公司地处广东省潮州市,目前公司产业基地占地面积18万平方米,厂房面积11万平方米,现有员工2500名,各类技术人员200名,总资产人民币4.5亿元。公司是我国专业生产全系列片式...
自微型计算机出现后,因其体积减小、成本大幅度下降、可靠性不断提高而改变了以往只使用由一个CPU组成的装置实现对多个回路自动控制的概念。人们通过实践发现,生产过程中的每一个局部使用各自独立的带CPU的控制...
电子政务-大幅度提高火力发电效率的方法.zip
Apiumc Gateway ...Apiumc Gateway 是高性能的Web网关,它从底层Socket原始...在追求功能多样性上性能也无语伦比,拥有多种措施大幅度改善源应用性能,是企业和从业者非常值得掌握的的Web应用托管工具,是F5国产替代首选。
2022年高三学生如何大幅度提高学习成绩的学习方法[扫描版].pdf
反射是一种很重要的技术,下面这篇文章主要给大家介绍了关于.NET Core/Framework如何创建委托大幅度提高反射调用性能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
CPU过热降频导致性能大幅度下降.pdf
这一经过再设计的新型Cisco SD208/216 8/16 端口10/100 交换机能够大幅度提高您的网络的速度。所有8/16 个端口均为自适应,并提供自动MDI/MDI-X 线缆交直检测调整功能,因此您不用担心电缆的类型。每个端口可独立...
神经网络在汽车起重机幅度预测中的应用及泛化性能分析.pdf
用一个实例程序来考察这两种调制方式的抗噪声性能。我们将创建两个仿真模型,分别用于实现脉幅调制和正交幅度调制。
介绍了车集煤矿2607综采工作面在收尾过程中,成功应用虚中心调斜技术,在工作面斜长增加过程中采取相关技术措施,实现工作面大幅度不等长调斜收尾,提高了煤炭采出率,为不规则工作面调斜开采提供了经验。
2310综采工作面在收尾前,车集煤矿应用虚中心调斜回采技术,并在工作面调斜回采过程中采取控制顶板和设备的相关技术措施,实现工作面机头大幅度不等长调斜回采,解决了工作面大幅度调斜期间液压支架和输送机等设备的控制...
即使升级硬件也不能大幅度提高性能。因此,代码调优已成为获得应用最佳性能的有效方法。 代码调优涉及优化目标平台上可用资源的利用、源代码、或算法。它涉及用 Profiler 来分析代码、使用性能分析器/监视器来分析...
Brocade iSCSI网关能够在服务器和光纤通道存储设备之间建立经济实用、易于管理的连接...即使是成本最低的服务器也能够通过Brocade iSCSI网关连接到企业的存储区域网络(SAN),进而使用可靠的高性能光纤通道存储设备。