AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 401790
Accepted
ledy
ledy
Asked: 2012-06-25 09:01:28 +0800 CST2012-06-25 09:01:28 +0800 CST 2012-06-25 09:01:28 +0800 CST

apache2: mpm 配置

  • 772

在出现诸如“CRITICAL - load average: 135.12, 92.20, 44.09” 和 oom-killer 之类的几条 nagios 消息后,我用不同的设置一次又一次地检查配置,但没有成功。

似乎对 ubuntu 机器有帮助的唯一解决方法是这个更清洁的 cronjob:

[ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

阅读 oom-killer 信息,告诉我 apache2 是坏的(父)进程。此 vserver 上的流量很少,几乎没有任何峰值。

lscpu

架构:x86_64

CPU 操作模式:32 位、64 位

字节顺序:小字节序

中央处理器:1

免费-m

内存:2003 835 1168 0 18 381

-/+ 缓冲区/缓存:435 1568

掉期:1019 129 890

apache2.conf mpm

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   10000
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    KeepAliveTimeout     15     
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          100     
    MaxRequestsPerChild 10000   
</IfModule>
<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          100     
    MaxRequestsPerChild 10000
</IfModule>

没有类似 mysql_tuner.sh 的 apache 或类似 vps 的有用示例吗?

谢谢

apache-2.2 mpm-worker
  • 1 1 个回答
  • 2948 Views

1 个回答

  • Voted
  1. Best Answer
    Ben Lessani
    2012-06-25T09:33:35+08:002012-06-25T09:33:35+08:00

    您在内存上分配过多 - OOM 表示“内存不足” - 高平均负载将是机器交换的结果。

    您不需要调整脚本来了解要使用的适当设置。启动 Apache,然后查看单个线程的 RAM 使用情况。通常,对于 PHP 应用程序,预计大约 30MB。然后,您可以开始计算实际可以运行多少个线程。

    您可能会发现您在应用程序级别(PHP 最大内存或 MySQL)而不是 Apache 线程本身的数量上过度分配了内存;就是这样,这就是应用程序将使用量推向了边缘。

    目前,要非常保守,然后逐步提高。因此,将设置降低到如下所示:

    StartServers          1
    MinSpareServers       1
    MaxSpareServers       10
    MaxClients            15
    MaxRequestsPerChild   1500
    

    然后降低所有 MySQL 内存设置,或者至少降低连接数(大约 15 个);并降低所有 PHP 最大值。内存设置。

    内存使用脚本

    这是我为内存使用编写的一个小脚本,但请记住,它不会正确考虑共享库等。

    只需创建一个新文件,

    例如。/root/memory_usage.sh

    然后使用应用程序名称运行,

    例如。/root/memory_usage.sh apache2 或者 /root/memory_usage.sh mysqld

    #!/bin/bash
    
    grandtotal=0
    
    if [ $# -lt 1 ];then
      echo "$0: invalid option"
      echo "You are missing required arguments"
      echo "1 Application name or 'all', 2 2nd application name (optional)"
      exit 0
    fi
    
    if [[ "$1" == "all" ]]; then
      tot=0;for i in `ps -e -orss=`;do tot=$(( $tot + $i )); done;
      echo "Total " $(( $tot /4096 )) "MB"
      exit
    fi
    
    for app in $@; do
      echo -n $app
      ps u -p $(pidof $app) | awk 'NR > 1 {nm += $5} END {print " Total:  " nm/1024 " MB"}'
      apptotal=`ps -e -orss=,args= | grep "$app" | awk 'NR > 0 {nm += $1} END {print nm}'`
      echo "$app Total: " $(( $apptotal / 4096 )) "MB"
      grandtotal=$(( $apptotal + $grandtotal ))
    done
    
    if [ $# -gt 1 ];then
      echo "Grand total: " $(( $grandtotal / 4096 )) "MB"
    fi
    
    • 2

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve