小编Sno*_*lic的帖子

内存管理“不错”

在问这个问题之前,我给你一些背景知识:我在 VPS 上运行一个网站。VPS itselmf 运行 apache web 服务器,生成带有访问 SQLite 数据库的页面的 PHP 代码,并运行一些由 cron 作业触发的后台任务。

这些后台任务主要是更新数据库值,添加新的记录显示给网站用户。

性能方面,网站的响应性是优先考虑的,但后台任务对时间不敏感,如果必须延迟,减慢,......完全没有问题。考虑到我的访问量并不多(每天大约 4000 次页面浏览,其中大部分都被缓存了),我可以负担得起以低优先级运行它们,并且它们仍然可以完成工作。CPU 方面,我以 0 的“niceness”(默认值)运行 apache,后台任务的“niceness”从 10 到 18。一切都很好。

内存是一个问题,因为其中一些任务的内存占用量很大。其中一些实际上会崩溃,因为在需要时没有足够的内存。通常发生的是:

  1. 高内存消耗任务1被触发
  2. 用户访问网站 => 任务 1 被延迟(我没问题)
  3. 任务 1 恢复
  4. 高内存消耗任务 2 被触发。由于延误,任务1没有完成
  5. 用户访问网站 => 两个任务都被延迟(仍然没有问题)
  6. 任务 1 恢复并需要更多内存 => 没有剩余内存并且任务 1 崩溃
  7. 任务 2 完成
  8. 用户访问网站
  9. ...

VPS 在 1 Gig 的 RAM 系统上运行,目前没有定义 SWAP。我认为添加一个 SWAP 空间(免费,因为它不会花费我更多),可能是我问题的一个很好的解决方案。在上述事件的过程中,后台任务使用的一些内存可能会被交换,从而降低这些任务的性能,但话说回来,我对此没有问题。

我想避免的是交换 apache 内存,因为它会降低最终用户对网站的响应能力。就像我用“nice”表示 apache 比后台任务更重要一样。如果您看到我的问题的另一种解决方案,欢迎您提出任何建议。我也在改进后台任务以减少它们的内存占用,但这需要一些时间。

linux memory nice

5
推荐指数
1
解决办法
3683
查看次数

标签 统计

linux ×1

memory ×1

nice ×1