运行时消耗17mb的内存(使用memory_get_peak_usage()记录),我有一个脚本。
脚本每天运行100万次。 每日总内存消耗:1700万mb
一天86400秒。
17000000/86400 = 196.76
假设:每天运行此脚本100万次将需要至少196.76个专用内存。
我的假设是否正确?
答案 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)
我不认为这个计算会给出正确的结果,因为你还需要考虑其他因素,如 -
在你的计算中,除以86400秒的分数是多少?为什么不是几小时或几毫秒。对我来说,计算似乎毫无意义。