您好 我想用java和tomcat服务器建立一个网站。 该网站将为每个用户设置服务器上所有进程的CPU和内存限制。例如,对于每个用户%3 cpu和100mb内存限制。
我该怎么做? 感谢
答案 0 :(得分:1)
使用一个Tomcat进程是不可能的。您需要生成多个子进程,每个子进程都有自己的(-Xmx100m或OS特定的内存配额)和特定于操作系统的设置来控制CPU配额。
根据用户的恶意程度,您还可以限制可用文件描述符的数量,端口范围,磁盘配额等。最后,将每个用户的进程放入VM和/或jail可能是值得的。
答案 1 :(得分:0)
Java中没有可用于强制限制线程资源使用的机制。唯一可行的方法是让底层操作系统执行此操作,这很可能需要您为每个限制生成一个单独的JVM,并且它不能跨平台移植。
请注意,您可以对函数调用设置超时限制(使用Executor)并使大多数操作中断。这对你来说可能已经足够了。如果您需要更多,则需要操作系统才能介入。