我们正在使用ASP.NET,但有时我们的应用程序使用非常多的CPU或RAM资源。我想限制每个虚拟目录/网站的资源,并在达到警报级别时获得警报。
我不知道我可以为IIS做这个,但我想知道这可能是其他网络服务器如apache吗?
答案 0 :(得分:0)
在Java中,您不能让Java虚拟机对某些线程强制执行CPU时间限制:您可以做的最好的事情是为您创建的任何线程设置线程优先级。如果没有其他工作要做,那么一个线程会烧掉尽可能多的CPU周期,除非它阻塞某些东西(I / O,同步监视器等)。
使用JMX,您可以获得有关线程的一些信息,以便可能检测到一些失控线程情况,但是您无法直接控制线程允许的CPU时间量。
如果您愿意重新构建动态内容和其他服务,您可以用这样的方式编写它们,即它们可以支持一个“工作单元”,这个单元在某种程度上低于完整请求的工作量,并且然后你可以让你的请求处理线程执行一个工作单元,然后睡一段合适的时间。您可以通过这样做来减少CPU使用率,但是您也肯定会减慢响应时间。
如果您的用户满意,那么充分利用的CPU是否有任何问题?也许你的问题的真正解决方案是更多或更大的硬件。