我的记忆力使用假设:它是否正确?

时间:2010-08-13 06:17:40

标签: php memory-management

运行时消耗17mb的内存(使用memory_get_peak_usage()记录),我有一个脚本。

脚本每天运行100万次。 每日总内存消耗:1700万mb

一天86400秒。

17000000/86400 = 196.76

假设:每天运行此脚本100万次将需要至少196.76个专用内存。

我的假设是否正确?

4 个答案:

答案 0 :(得分:2)

如果脚本在相同时间运行1000000个副本,那么您将获得1700万MB,但是因为它在完成后释放内存,所以不会在总和中添加使用量。

您需要知道同时运行多少副本并将该数量乘以17 MB。这将是最大内存使用量。

答案 1 :(得分:1)

不完全正确;你的脚本执行的前100次,它可能都适合内存;所以,前两分钟左右可能会按预期进行。但是,一旦你将计算机推入交换机,你的计算机将花费大量时间处理交换,接下来的999,800次执行可能会比你预期的要慢得多。并且,当它们开始竞争磁盘带宽时,它运行的时间会越长越好。

我也不确定使用php memory_get_peak_usage()函数;它是程序所需内存的“内部”视图,而不是操作系统视图中的视图。可能会更糟糕。 (也许解释器需要20兆的RSS才能运行一个hello-world。也许不是。)

我不确定什么是您的应用程序的最佳前进方式:也许它可能是一个长期存在的流程,在发布时处理事件,并返回结果。这可能能够在明显更少的内存空间中运行。也许结果实际上不会每0.0005秒更改一次,您可以将结果缓存一秒,并且每天只运行86400次。或者您可能需要购买更多机器。 :)

答案 2 :(得分:0)

是的,但如果它同时被多次调用怎么办?您有多个线程同时运行。

编辑:另外,为什么这个脚本每天运行一百万次? (除非你有一个庞大的网站)

答案 3 :(得分:0)

我不认为这个计算会给出正确的结果,因为你还需要考虑其他因素,如 -

  1. 脚本运行多长时间。
  2. 一次运行的脚本数量是多少。
  3. 在整个时间内分发脚本的调用。
  4. 在你的计算中,除以86400秒的分数是多少?为什么不是几小时或几毫秒。对我来说,计算似乎毫无意义。

相关问题