在我的网络应用中,我必须生成一些pdf和图表文件。问题是,当用户需要生成这些文件时,服务器将达到100%。
ATM我正在考虑使用一个cron来生成用户可能需要的报告,并且只使用一部分服务器资源更长的时间,而不是某个时刻的所有资源。
这是我从理论的角度思考的问题。我可能错了。请指正。你知道如何用PHP实现这个目标吗?
答案 0 :(得分:0)
不,不是PHP。
有几种方法可以限制Linux进程的CPU使用率。我发现这个是最优雅的:http://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/
答案 1 :(得分:0)
有很多方法可以做到这一点(是的,你可以用PHP来做)。
然而,最重要的问题是你真正想要实现的目标。
在一天结束时,如果您的服务器CPU被单个进程()最大化并不重要,只要该进程对服务器正在执行的所有其他操作的影响最小。因此,您需要做的第一件事就是查看系统上所有其他请求的发生情况。
如果确实发现了明显的不利影响,那么解决方案就是:
通过cron运行流程将是选项3的一个示例,但您明确询问了如何实现选项1.
由于瓶颈似乎是CPU,而且如果你看到对其他交易产生影响再次,那么Linux盒子上的方法1的两个解决方案将是:
第二种方法不需要第二台机器 - 您可以使用taskset将大多数进程的处理器设置为(例如)除了一个核心之外的所有进程 - 并保留用于运行繁重进程的核心。
无论如何,您应该熟悉通过网络服务器调用长时间运行的流程的问题。
注意,如果要在请求之前生成文件,使用cron将是一种明智的方法 - 但如果您想按需执行,那么'at'将是更好的解决方案。