原文网址:https://plumbr.eu/blog/how-to-estimate-memory-consumption
译文网址:http://blog.dontcareabout.us/2014/03/blog-post.html
BBS 用 markdown 语法撰写
______________________________________________________________________
这个故事得从十年前开始说起,
那时我第一次接触到一个[尖头老板]的问题:
“我们的产品要布署的时候,需要买多好的 server?”
在产品发表之后,我们花了九个月的时间打造了一个金光闪闪的新系统,
显然公司已经承诺要提供整个解决方案,包含硬件的部份。
囧... 我麻烦大了。
我只有短短几年的经验,回答这问题跟丢骰子没啥两样。
虽然我看起来整个就是缺乏信心,不过我仍然得生出一个答案。
在 google 了四个小时后,眼花撩乱的脑袋里仍然是相同的问题:
“如何估算所需的运算能力?”
在这篇文章中,我先用“如何估算内存需求”这个题目,
让你在写 Java application 时有个初步的准则。
如果你没啥耐心看完,答案是先用“即时资料占用的内存量”乘上 5 倍,
然后以此作为微调起点。
想知道背后的逻辑,那就继续看下去,我会一步一步推导。
首先,我只能建议在取得详细的资讯之前,避免回答这类的问题。
你必定得根据效能需求来回答这类问题,
所以在厘清这些东西之前甚至不应该开始。
我说的也不是“这个系统要能同时承受 700 个使用者”这种暧昧的内容,
而是大量特定的资讯,例如延迟时间、throughput、
计算资料的数量、使用模式等等。
而且还不要忘记预算这档事。
大家都会梦想有着次 ms 等级的延迟度,
但没有大财团等级的预算,那抱歉,它只会是一个幻想。
现在让我们假设你已经有这些需求了。
下一步是建立负载测试码来模拟使用者行为。
如果你现在能够同时启动这些程式码,这就是你回答问题的基础。
As you might also have guessed,
the next step involves our usual advice of measuring not guessing.
But with caveat.
即时资料的大小