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
    • 最新
    • 标签
主页 / user-49111

thenickdude's questions

Martin Hope
thenickdude
Asked: 2012-08-30 18:51:39 +0800 CST

Ubuntu 的 PHP 会话垃圾收集 cron 作业需要 25 分钟才能运行,为什么?

  • 13

Ubuntu 设置了一个 cron 作业,用于查找和删除旧的 PHP 会话:

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -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

我的问题是这个过程需要很长时间才能运行,并且有很多磁盘 IO。这是我的 CPU 使用率图表:

CPU 使用率图

清理运行由蓝绿色尖峰表示。在此期间开始时,PHP 的清理作业被安排在默认的 09 和 39 分钟时间。在 15:00,我从 cron 中删除了 39 分钟的时间,因此两倍大小的清理作业运行频率减半(您可以看到峰值宽度加倍,频率减半)。

以下是 IO 时间的相应图表:

IO时间

和磁盘操作:

磁盘操作

在大约有 14,000 个活动会话的高峰期,可以看到清理运行了整整 25 分钟,显然在整个期间使用了 100% 的 CPU 核心和似乎 100% 的磁盘 IO。为什么它如此占用资源?一个ls会话目录/var/lib/php5只需要几分之一秒。那么为什么修剪旧会话需要整整 25 分钟?我能做些什么来加快速度吗?

该设备的文件系统目前是 ext4,在 Ubuntu Precise 12.04 64 位上运行。

编辑:我怀疑负载是由于不寻常的过程“fuser”造成的(因为我希望一个简单rm的东西比我看到的性能更快)。我将删除 fuser 的使用,看看会发生什么。

linux
  • 5 个回答
  • 9045 Views

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