专栏首页技术向apache2 占用内存过高调试要点与命令

apache2 占用内存过高调试要点与命令

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/apache2_mem_overload/

现象

我的一台腾讯云服务器总是莫名其妙地占用超过80%的内存,用top命令发现大部分是apache占用的。

排查配置文件

KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxClients 同时处理的请求数(最重要的参数,要少于ServerLimit)
MaxRequestsPerChild 每个子进程处理的最大请求数

它们之前的关系:

prefork控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。

MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和 MaxSpareServers。MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了 “MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:

1、可防止意外的内存泄漏。

2、在服务器负载下降的时侯会自动减少子进程数。

调试过程中用到的指令:

查看请求总数

ps -ef|grep http|wc -l

查看平均负载(loadavg)

loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能降低了

cat /proc/loadavg

查看TCP连接数

netstat -ant | grep :80 | wc -l 
## 查看进程的线程数
```shell

ps -Lf pid|wc -l

## 服务器压力测试

```js

ab -n 5000 -c 100 https://your_host_domin

一些参数列表

-A:指定连接服务器的基本的认证凭据; -c:指定一次向服务器发出请求数; -C:添加cookie; -g:将测试结果输出为“gnuolot”文件; -h:显示帮助信息; -H:为请求追加一个额外的头; -i:使用“head”请求方式; -k:激活HTTP中的“keepAlive”特性; -n:指定测试会话使用的请求数; -p:指定包含数据的文件; -q:不显示进度百分比; -T:使用POST数据时,设置内容类型头; -v:设置详细模式等级; -w:以HTML表格方式打印结果; -x:以表格方式输出时,设置表格的属性; -X:使用指定的代理服务器发送请求; -y:以表格方式输出时,设置表格属性。

参考:

https://blog.csdn.net/binyao02123202/article/details/10162361

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《卷积神经网络的python实现》

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/implement_neural_network_u...

    羽翰尘
  • ac GAN MNIST代码详细解析

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/acgan_reading_understandin...

    羽翰尘
  • python3 rsa非对称加密与签名校验

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/python-rsa/

    羽翰尘
  • 面试汇总(五):操作系统常见面试总结(一):进程与线程的相关知识点

    前面的两篇文章介绍了计算机网络在面试中的一些常见的问题。今天我们给大家介绍在面试中,操作系统常见的面试题。操作系统在计算机行业中是一门最基础的技术,无论是在开发...

    stefan666
  • 计算机网络学习--应用层

    第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层

    shimeath
  • (2.8)James Stewart Calculus 5th Edition:Derivatives

    如果极限存在,则可以简单写成 导数(衍生品?) (其实,自己对于导数 这个名词的翻译,为什么这样翻译一直不理解)

    dodo_lihao
  • 鸿蒙轻内核四大基础功能介绍

    本文将为大家介绍鸿蒙轻内核中的进程、线程、内存和网络四大基础功能,包括一些基础概念、实现功能和使用场景等,供想要深入了解鸿蒙操作系统的初学者学习参考。

    烂猪皮
  • 云商微盟小程序APP开发介绍

    2017年期间,共享经济理念在市场上如燎原之火不断扩大,也一度影响着不少企业进行商业改革,进入共享经济的商业之中。其中共享链与小程序的结合更是迅速在行业中崛起,...

    用户2545126
  • 网络结构之 Inception V3

    Factorizing Convolutions with Large Filter Size

    AIHGF
  • IPC进程间通信/跨进程通信

    进程:一个JVM就是一个进程 线程:最小的调度单元 一个进程可以包含多个线程,在安卓中有一个主线程也就是UI线程,UI线程才可以操作界面,如果在一个线程...

    先知先觉

扫码关注云+社区

领取腾讯云代金券