当用户上传一个表格然后就让你系统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,然后上述问题再也没有出现。

浙公网安备 33010602011771号