当用户上传一个表格然后就让你系统cpu90%+甚至服务器503的真实情况和处理办法

起因:

系统做好了并且投入使用,突然有一天🈶一个时刻你发现系统打开很慢,然后登录服务器发现cpu100%,然后似乎不会降低。

各种找问题,,,最终发现是用户u1上传了一个xlsx表格导致。

下载表格查看文件大小在9M左右,文件大小没任何问题。

 

就是这个文件,打开它

原因:数据部分空行太多,导致上传后程序读取缓慢。

解决办法:

你不可能去跟用户说你不能上传带空行的文件,万一手误了呢,建议是系统做一下控制和对应的提示,但你又不能控制死,万一哪天用户的表格没问题并且大小确实有xM的时候你还需要改代码编译重启服务,影响效率不说还可能被雕。

上代码 --》

var max_size_byte = data_extension_engine.get_dictionary_all_config_system().get_val_by_key_with_default_val("limit_max_size_byte_portal_xls", "4").ToInt();

            foreach (var item in arr)
            {
                byte[] bytes = CosUtil.stream_To_Byte_Array(item.OpenReadStream());

                string name = "xls_" + item.FileName;

                string path = CosUtil.upload_one_file_to_local(bytes, name);

                if (bytes.Length > max_size_byte * 1048576) return new ret_com().back_failed("操作失败,单个文件大小不能超过" + max_size_byte + "MB,请删除表格中多余的空白数据行再上传.");

。。。。。。。。。。。。

 

 

 

其中 limit_max_size_byte_portal_xls 是系统的配置项:

 

 

 

 

 

 

就这样,控制上传文件大小为4M,然后上述问题再也没有出现。

 

posted @ 2025-04-11 16:03  liskov_design  阅读(9)  评论(0)    收藏  举报