`
teder
  • 浏览: 8253 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

应用服务器cpu,内存占用高

阅读更多

2010年10月份左右

三天两头出现服务器飘红的情况,cpu高,内存有时出现用光的情况。查看线上服务器一段时间,也没有特别的错误日志,慢请求也是不明显的,在服务器出问题的时间,什么请求都慢,而且多,很难看出哪些请求是有问题的。 在 监控系统中发现,单台应用的memcache服务器get最高达到 2000/s,为在短时间内解决问题,直接让SA加了两台服务器。 似乎有所好转,红的频率有所降低,但在一个星期总会出现。在监控中也似乎没什么发现,后来在应用服务器上查看请求数时发现,负载均衡后还是不太均衡的。有 的服务器是3000/m,有的服务器是1000/m.和SA联系后,发现在一组负载均衡上只配置了部分web应用,所以这部分的web应用承载了一半的请 求。

2010年11-12月份左右

自上次解决负载均衡导致服务器飘红问题后,房产应用服务器还是会时不时出现cpu负载过高的问题,并经常在半夜0点后,偶尔也在白天。

开始查找问题原因。

1. 哪些请求太慢?找出了一些慢请求,结果分析后,找不出导致慢的代码,而这些慢的请求也是在服务出问题时出现的。
2. Cpu高时内存是正常的,开始怀疑是不是因为jvm不停地full GC引起的,和妙子分析服务器的gc情况,没发现问题,即使服务器cpu高时GC也是正常的。
3. 会不会是搜索的原因。突然觉得非常有可能呀,请求长时间挂着,当然占cpu啦。

分析情况如下:
以下是一个小时的单台isearch merge的情况。
[admin@merge1 httpd]$ grep 2010:01 access_merge_101220.log|wc -l 359232 [admin@merge1 httpd]$ grep 2010:10 access_merge_101220.log|wc -l 233854 [admin@merge1 httpd]$ grep 2010:01 access_merge_101221.log|wc -l 94702 [admin@merge1 httpd]$ grep 2010:10 access_merge_101221.log|wc -l 257893 [admin@merge1 httpd]$ grep 2010:01 access_merge_101226.log|wc -l 599050 [admin@merge1 httpd]$ grep 2010:10 access_merge_101226.log|wc -l 246161 [admin@merge1 httpd]$ grep 2010:01 access_merge_101227.log|wc -l 414787 [admin@merge1 httpd]$ grep 2010:10 access_merge_101227.log|wc -l 218420

这是房merge1上isearch的访问日志数。20号和26号是应用服务器在半夜(1点)cpu负载过高的时间。


应用在正常情况(这里取的时间是上午10点):
[admin@merge1 httpd]$ grep 2010:10 access_merge_101220.log|wc -l 233854 [admin@merge1 httpd]$ grep 2010:10 access_merge_101221.log|wc -l 257893 [admin@merge1 httpd]$ grep 2010:10 access_merge_101226.log|wc -l 246161 [admin@merge1 httpd]$ grep 2010:10 access_merge_101227.log|wc -l 218420

所以正常 250000*2/60/60==139qps

非正常半夜1点(20号和26号)情况:
[admin@merge1 httpd]$ grep 2010:01 access_merge_101220.log|wc -l 359232 [admin@merge1 httpd]$ grep 2010:01 access_merge_101226.log|wc -l 599050

所以非正常 约500000*2/60/60==287qps

正常半夜1点情况:
[admin@merge1 httpd]$ grep 2010:01 access_merge_101221.log|wc -l 94702 [admin@merge1 httpd]$ grep 2010:01 access_merge_101227.log|wc -l 414787

这两天的请求数是有差别的,而这两天服务器是正常的,只能说明它撑住了。
可以看出,isearch大约能撑住的qps是,供参考:
能撑住400000*2/60/60==222qps


上面的数字,它反应了搜索服务器和应用服务器的性能。应用服务器对isearch的请求越来越多时,isearch开始出现超时,当然应用服务 器从isearch那里取得数据所花费的时间也越来越多,应用端长挂着(因为对isearch是同步),cpu被占着,负载当然高了。


可以理解成isearch已经不能负荷了。

为什么晚上不能负荷?

1. 现在应用有老应用和新应用
2. 有大量的安全测试,对isearch的请求都是她妈的<script>,xss,<a> 这种东西

a) 半夜健全帮我干的活:
[web@oldfang1 logs]$ grep 2010:01 koubei-usertrack.log-20101223 | grep /fang/listsell.html | grep alibaba |wc -l 4705 [web@oldfang1 logs]$ grep 2010:01 koubei-usertrack.log-20101226 | grep /fang/listsell.html | grep alibaba |wc -l 50917 26号半夜一点请求老应用list就这么多。四台老应用不是要200,000一小时,还不算其它的爬虫。

[root@tfang10 logs]# grep 2010:01 koubei-usertrack.log-20101222 | grep /fang/listsell.html |wc -l 1983 [root@tfang10 logs]# grep 2010:01 koubei-usertrack.log-20101226 | grep /fang/listsell.html |wc -l 2222 26号半夜一点对新应用没有请求

b) 正常情况下对出售list请求:
[root@tfang10 logs]# grep 2010:10 koubei-usertrack.log-20101222 | grep /fang/listsell.html |wc -l 11639 [root@tfang10 logs]# grep 2010:14 koubei-usertrack.log-20101222 | grep /fang/listsell.html |wc -l 13077 [root@tfang10 logs]# grep 2010:14 koubei-usertrack.log-20101224 | grep /fang/listsell.html |wc -l 6911 [root@tfang10 logs]# grep 2010:10 koubei-usertrack.log-20101224 | grep /fang/listsell.html |wc -l 6980 正常情况下,新应用对出售list请求也就这么点,10台也就120,000一小时。


[web@oldfang1 logs]$ grep 2010:10 koubei-usertrack.log-20101226 | grep /fang/listsell.html |wc -l 2300 [web@oldfang1 logs]$ grep 2010:10 koubei-usertrack.log-20101223 | grep /fang/listsell.html |wc -l 3425 正常情况下,老应用请求是很少的,4台也就10,000一小时

26号晚上对出售isearch请求就远远大于正常情况下对isearch请求.

提议解决方案:
1. 我要应用端,控制对isearch的请求,如果关键字中出现<script>,xss,<a>,不对isearch发起请求。
2. 看看能不能在服务上控制对安全检测,即使qps少点也是好的嘛

 

基本确定是这个问题引起应用服务器的问题,如果我们把这个问题解决了还是有问题,我们再来排查问题,希望就是它了。

 

2011年1月

近来观察,半夜已经没问题了。 日志也比较正常了。

今天tfang1在9点半的时候出现问题。排除了其它原因,只能再查看慢的请求了。查看9点半的日志,请求超过1s的,当然查最慢的。 grep 2011:09:3 koubei-usertrack.log-20110116|awk '{if($1>1000) print $0}' >~/broker.log 都是经纪人对房源的操作。经纪人说操作很慢,的确定很慢。这些url请求是可参考的,非常集中了,不像刚找问题时,找慢请求,一找乱七八糟什么都有,连取个cms文件,取个Cache都慢。

相信这是cpu高的最后一个问题。阿门。

在检查管理的列表中,有一个控制重复提交的安全标签,一个房源因操作多,而用到了五次,一页10个房源。一个list请求,至少 请求50次.而这个安全标签是用到了cache.问题就在这里,cache连接太多,在建立和释放链接时,用掉了太多的系统资源,cpu受不起了。

在Detail页面中也发现,为了过滤掉敏感词汇,对7个文本运用cache处理敏感词,又是一个消耗。

回顾:以前出现过memcache的客户端连接不够用的情况,而当然的解决办法是直接调大客户端的连接。现在想来其它是一种隐藏错误的做法。

分享到:
评论

相关推荐

    c#获取系统和指定进程的CPU和内存占用率

    在C#编程中,了解如何获取系统和特定进程的CPU及内存占用率是十分重要的,尤其是在进行性能监控或资源管理的场景下。本篇将详细解释如何实现这一功能,并提供相应的代码示例。 首先,我们要关注的是操作系统级别的...

    cpu内存占用程序.rar

    "CPU内存占用程序.rar" 提供的工具或指南可能针对Linux和Windows Server操作系统,帮助管理员监控和管理资源使用情况。以下是相关知识点的详细说明: 1. **CPU占用率**:CPU占用率是衡量处理器工作负载的重要指标。...

    windows server进程内存占用及CPU使用率自动监控并记录脚本

    当遇到应用程序偶尔出现问题时,我们往往需要深入分析是否由于进程内存占用过高或者服务器CPU使用率异常而导致。为此,我们可以利用Windows内置的命令行工具,如`Tasklist`和`WMIC`,编写批处理脚本来实现自动化监控...

    IIS应用程序池CPU占用率分析专家

    软件启动后, 将显示两个窗口,一个是,当前看到的窗口,IIS中所有应用程序池都显示出来了(包括未启动应用程序池),另一个是服务器活动应用程序池 CPU 占用率窗口。 首先在活动池中找出CPU占用率非常高的池,这...

    服务器查CPU占用

    1. **识别问题**:快速定位到CPU或内存占用高的站点,识别潜在的性能瓶颈。 2. **优化配置**:根据监控数据调整IIS站点的配置,例如限制并发连接数,优化应用池设置等。 3. **排查代码问题**:如果发现某个站点持续...

    CPU占用高

    标题“CPU占用高”指的是计算机或服务器的中央处理器在运行过程中消耗资源过多,导致系统响应变慢或无法正常处理任务的现象。这种情况可能是由于多种因素引起的,包括但不限于恶意软件、资源密集型应用程序、系统...

    LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    当用户量过大,或服务器性能不足以支持大用户量,但同时又得不到扩容的情况下,进行性能分析,并对系统、应用、程序进行优化显得尤为重要,也是节省资源的一种必不可少的手段。目前大多数运维产品都基于JAVA语言开发...

    CPU占用率高的九种可能

    ### CPU占用率高的九种可能 #### 一、软件冲突导致CPU占用率高 当多个应用程序或服务在后台运行时,可能会出现资源竞争的情况。这种情况下,某些程序可能会占用过多的CPU资源,导致CPU占用率达到100%。例如,某些...

    weblogic内存占用过大调优

    - 通过`top`可以查看各个进程的CPU和内存占用情况,以便定位到具体是哪个进程导致内存占用过高。 - `vmstat`命令可以帮助我们了解系统的整体性能状况,包括CPU利用率、内存交换情况等。 - 监控系统交换空间(swap...

    C# 监测服务器使用情况(CPU、内存、硬盘、网络宽带、进程)

    进程(XX)CPU百分比、进程(XX)占用的内存大小、进程(XX)占用的内存百分比。 PerformanceCount方面比较详细,可以分别获取 计数器的类别、类别下的实例名和计数器名、通过活动的输入获取对应的状态值

    linux服务器找到占用cpu高的java代码的办法

    通过以上步骤,我们可以有效地找出并解决Linux服务器上Java应用占用CPU过高的问题。记得在处理过程中保持耐心和细致,因为性能问题往往需要深入分析才能找到根本原因。同时,定期的性能测试和代码审查也是预防此类...

    减少Oracle内存占用

    #### 二、Oracle内存占用过高原因分析 在Windows XP环境下运行Oracle 10g时,由于操作系统本身的限制以及Oracle配置不当,可能会导致Oracle占用过多内存,具体表现如下: 1. **系统资源限制**:Windows XP作为较早...

    针对应用服务器的CPU-内存-IO-网络全面调优实践

    在现代信息技术领域中,应用服务器的性能对于确保业务的高效运行至关重要。为了提高性能,对服务器进行CPU、内存、I/O和网络的全面调优是一个必不可少的过程。这一过程可以帮助减少延迟、提高吞吐量、优化资源使用...

    .NET Core监控系统CPU内存等信息的工具.zip

    `TotalProcessorTime`返回的是自进程启动以来所消耗的CPU时间,而`WorkingSet64`表示进程当前在物理内存中占用的字节数。 在CPU监控方面,还可以利用`System.Diagnostics.ProcessManager`类的静态属性`...

    专题--服务器CPU使用率高的原因分析与解决办法

    2. 超线程:超线程可能导致 CPU 使用率占用高。 解决办法:卸载天网防火墙或在 BIOS 中关闭超线程功能。 3. 硬件配置不合理:例如内存不足、电源功率不足等。 解决办法:检查硬件配置是否合理,确保内存和电源...

    C# 任务管理器及控制台获取CPU占用率前3位进程

    这个控制台应用程序可以帮助开发者或运维人员快速地获取系统中CPU使用情况,而无需依赖图形界面工具,这对于远程服务器或自动化监控场景尤其有用。通过不断优化和改进,这个小工具可以进一步扩展,例如,添加实时...

    服务器大量php-cgi.exe进程,导致CPU占用100%的解决[定义].pdf

    ### 服务器大量php-cgi.exe进程导致CPU占用100%的问题分析及解决方案 ...通过上述方法,不仅可以有效解决由大量`php-cgi.exe`进程导致的CPU占用率过高问题,还能进一步提升服务器的整体性能和稳定性。

    WMI获取远程服务器CPU,内存使用率函数源代码

    本文将深入探讨如何利用C#编程语言,通过WMI来获取远程服务器的CPU和内存使用率,以解决Win32_LogicalMemoryConfiguration类可能存在的问题。 首先,我们要了解WMI的工作原理。WMI是基于Common Information Model ...

Global site tag (gtag.js) - Google Analytics