代码改变世界

近期服务器挂掉总结

2018-09-12 09:46  卡斯撸代码  阅读(537)  评论(0编辑  收藏  举报

总结一下以备以后自查: 

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 );
这个适合数组下标使用
正常使用应该上面第一种。