我有一个脚本,当运行消耗17mb的内存(记录使用memory_get_peak_usage())。我的记忆使用假设:它是否正确?
脚本每天运行100万次。 每日总内存消耗:17百万MB
每天86400秒。
八万六千四分之一千七万= 196.76
假设:运行该脚本将100万次,每天至少需要196.76专用内存。
我的假设是否正确?
我有一个脚本,当运行消耗17mb的内存(记录使用memory_get_peak_usage())。我的记忆使用假设:它是否正确?
脚本每天运行100万次。 每日总内存消耗:17百万MB
每天86400秒。
八万六千四分之一千七万= 196.76
假设:运行该脚本将100万次,每天至少需要196.76专用内存。
我的假设是否正确?
如果脚本运行在同一时间 100万张,那么你会得到1700万MB,但它释放的内存来完成后,你不添加使用量总和。
您需要知道同时运行多少副本并将该数目乘以17 MB。这将是最大的内存使用量。
是有意义的!我一直在看这个问题完全是错误的。它真的只关乎有多少人正在同时下载。我会记住这一点,谢谢! – reefine 2010-08-13 06:41:49
是的,但如果它被同时调用多次呢?你有多个线程同时运行。
编辑:另外,为什么该脚本运行一百万次/天? (除非你有一个巨大的网站)
我不认为这种计算将给出正确的结果,因为你还需要考虑其他因素,如 -
而在你的计算什么是除以86400秒?为什么不是几小时或几毫秒?对我来说,这个计算似乎毫无意义。
回应你的问题我试图计算在任何给定的时间段内,我需要什么类型的资源(内存)来提供非常大量的请求(因此我使用秒的原因) – reefine 2010-08-13 06:30:41
不完全正确;你的脚本的第一百次被执行,它可能会适合所有的内存。所以,前两分钟左右的时间可能会按预期进行。但是,一旦将计算机推入交换位置,计算机将花费太多时间来处理交换,以致接下来的999,800次执行可能会大大低于您的预期。而且,由于它们都开始争夺磁盘带宽,它运行的时间越长,情况就会越糟糕。
我也不确定使用php memory_get_peak_usage()函数;它是程序所需内存的“内部”视图,而不是从操作系统的角度来看。这可能会更糟糕。 (也许解释者需要20兆RSS才能运行一个hello-world。也许不是)
我不确定什么是最适合您的应用程序的方式:也许它可能是一个单一的长寿命进程,它处理发布的事件并返回结果。这可能能够在更少的内存空间下运行。也许结果实际上并不会每0.0005秒改变一次,而且您可以将结果缓存一秒钟,并且每天只运行86400次。或者,也许你需要购买更多的机器。:)
很好说,并感谢您的信息。我将在云基础架构上托管应用程序,因此可伸缩性不会成为问题,但提前知道这些变量并不会造成什么影响:P – reefine 2010-08-13 06:37:05
你知道,我的假设是,如果我的脚本每分钟运行16次,这意味着自16盎司= 1品脱,60 * 1品脱= 7.5加仑/小时。 7.5/3.14159265 = 2.3873。因此,每分钟运行我的脚本16次会使我消耗2.38杯牛奶。 JK,我是个恶作剧。 – mattbasta 2010-08-13 06:26:44
17MB是一个PHP脚本恕我直言。 apache for php的默认内存限制为每个进程8mb。显然,人们可以改变它,但它会告诉你关于你的17mb的东西,不是吗? – naugtur 2010-08-13 06:36:21
@naugtur:在将文件提供给用户之前压缩文件时可能可以达到它? – Im0rtality 2010-08-13 06:39:59