linux – 内存管理“很好”

linux – 内存管理“很好”,第1张

概述在问题之前,我给你一些背景知识:我在VPS上运行一个网站. VPS itselmf运行apache web服务器, PHP代码生成带有acite到SQLite DB的页面,并运行由cron作业触发的一些后台任务. 这些后台任务主要更新数据库值,并添加要显示给网站用户的新记录. 性能方面,网站的响应性是一个优先事项,但后台任务不是时间敏感的,如果它们必须被取消,放慢速度,那么根本没有问题…….考虑到 在问题之前,我给你一些背景知识:我在VPS上运行一个网站. VPS itselmf运行apache web服务器,PHP代码生成带有acite到sqlite DB的页面,并运行由cron作业触发的一些后台任务.

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

性能方面,网站的响应性是一个优先事项,但后台任务不是时间敏感的,如果它们必须被取消,放慢速度,那么根本没有问题…….考虑到我没有那么多的访问量(每天大约4000页的浏览量,其中大多数都是缓存的),我可以负担得起低优先级的那些,他们仍然可以完成工作. cpu智能,我运行apache的“niceness”为0(默认值),后台任务的“niceness”从10到18.一切都很好.

内存是一个问题,因为其中一些任务具有高内存占用.其中一些实际上崩溃了,因为当他们需要时没有足够的内存.
通常发生的事情是:

>触发高内存消耗任务1
>用户访问网站=>任务1被延迟(我没有遇到任何问题)
>任务1恢复
>触发高内存消耗任务2.由于延迟,任务1未完成
>用户访问网站=>两个任务都延迟了(仍然没有问题)
>任务1恢复并需要更多内存=>没有内存,任务1崩溃
>任务2完成
>用户访问该网站
> ……

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

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

解决方法 您可以使用cgroup来执行此 *** 作.它允许您设置内存和内存交换的限制,因此您可以强制进程交换.

或者它也可以让你独立调整每个cgroup的swappiness,这样你就可以增加你的背景页面被换掉的几率:

http://www.kernel.org/doc/Documentation/cgroups/memory.txt

总结

以上是内存溢出为你收集整理的linux – 内存管理“很好”全部内容,希望文章能够帮你解决linux – 内存管理“很好”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1035834.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存