在问这个问题之前,我给你一些背景知识:我在 VPS 上运行一个网站。VPS itselmf 运行 apache web 服务器,生成带有访问 SQLite 数据库的页面的 PHP 代码,并运行一些由 cron 作业触发的后台任务。
这些后台任务主要是更新数据库值,添加新的记录显示给网站用户。
性能方面,网站的响应性是优先考虑的,但后台任务对时间不敏感,如果必须延迟,减慢,......完全没有问题。考虑到我的访问量并不多(每天大约 4000 次页面浏览,其中大部分都被缓存了),我可以负担得起以低优先级运行它们,并且它们仍然可以完成工作。CPU 方面,我以 0 的“niceness”(默认值)运行 apache,后台任务的“niceness”从 10 到 18。一切都很好。
内存是一个问题,因为其中一些任务的内存占用量很大。其中一些实际上会崩溃,因为在需要时没有足够的内存。通常发生的是:
VPS 在 1 Gig 的 RAM 系统上运行,目前没有定义 SWAP。我认为添加一个 SWAP 空间(免费,因为它不会花费我更多),可能是我问题的一个很好的解决方案。在上述事件的过程中,后台任务使用的一些内存可能会被交换,从而降低这些任务的性能,但话说回来,我对此没有问题。
我想避免的是交换 apache 内存,因为它会降低最终用户对网站的响应能力。就像我用“nice”表示 apache 比后台任务更重要一样。如果您看到我的问题的另一种解决方案,欢迎您提出任何建议。我也在改进后台任务以减少它们的内存占用,但这需要一些时间。