总结一下以备以后自查:
1、在net 4.5 安装去 QuartzNet 定时执行Job ,导致CPU 和内存一直很高,更新最新版解决
2、Job 网站缓冲池设置问题导致CPU一直很高,检查发现设置线程数设置过高。
3、代码问题:random 的使用问题,自己写了一个多少个数中随机获取几个数的方法:
有人输入10个中取10个导致一直陷在这个方法了导致服务器挂掉。
修改前
public static List<int> GetRandomIntList(int total, int pick) { List<int> result = new List<int>();//取出来的数就放到了这个集合里了 Random rd = new Random(); for (int i = 0; i < pick; ) { int a = rd.Next(1, total); if (result.Contains(a)) continue; result.Add(a); i++; } return result; }
原因是:一直取不到10,总共也不够十个,所以一直在循环。导致浪费资源。
修改后:
/// <summary> /// 在total里随机获取pick个数 /// </summary> /// <param name="total"></param> /// <param name="pick"></param> /// <returns></returns> public static List<int> GetRandomIntList(int total, int pick) { List<int> result = new List<int>();//取出来的数就放到了这个集合里了 Random rd = new Random(); var scope = pick; if (total < pick) { scope = total; } for (int i = 0; i < pick;) { int a = rd.Next(1, total + 1); a = a - 1; if (result.Contains(a)) continue; result.Add(a); i++; } return result; }
Next的方法说明:
可以取得下限取不得上限。
rd.Next(1, total + 1);代码也可以改成:
rd.Next(0, total );
这个适合数组下标使用
正常使用应该上面第一种。