我正在寻找可以通过编程方式检查的指示器,这些指示器会提示我的应用程序即将发生故障。我正在寻找诸如“空闲 IO 线程数量低到危险程度”、“应用程序池可用内存低”和“处理器使用率高”之类的一般信息。
这适用于 C#/asp.net 和 IIS。
以编程方式检查值的示例会很好,但不是必需的。欢迎任何好的想法。
最佳答案
我的想法:
确定您的网络应用的性能输入和输出。
- 输入(用户数量、用户正在执行的任务、一天中的时间等)
- 输出(内存使用、线程、滞后)
根据真实请求数据分析您的应用程序。 构建一个漂亮的输入及其相关输出表。 例如:
4 users calling page1 -> costs 4 - 6 mb, 4 threads
5 users calling page1 -> costs 7 - 14 mb, 5 threads
2 users calling page2 -> costs 120 - 200 mb, 1 thread
找到经常导致失败的输出,并找到导致这些输出的输入。建一个漂亮的max-likelyhood model失败。
当您的输入开始接近失败输出时,很可能即将发生失败。记录故障发生和不发生的时间,并将此信息反馈到您的表格中。您的网络应用程序将在即将失败时学习。
更新以回应评论:
查找输出是最简单的部分。
参见 SO 问题 How to get memory used in c# , How to get the cpu usage in C#对于更一般的问题 What key performance monitors should I watch for asp.net application .
这些问题的要点:
GC.GetTotalMemory - 告诉您垃圾收集器分配了多少。
Processor Object - 告诉您 CPU 上各种有趣的性能统计数据(CPU 空闲时间、使用情况等)。
关于c# - 即将失败的暗示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112053/