![文件上传时服务器 CPU 使用率过高的原因](https://linux22.com/image/588582/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%97%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E8%BF%87%E9%AB%98%E7%9A%84%E5%8E%9F%E5%9B%A0.png)
当我尝试上传大文件(约 2GB)时,服务器 CPU 使用率会变得非常高。我应该怎么做才能解决这个问题?
我只是使用标准 html 表单和 php 来上传文件。
如果我发帖到错误的论坛,我很抱歉。请给我指明正确的方向
以下是上传 4 个文件(18mb、38mb、60mb、33mb)时使用“top”命令的结果
1904 apache 20 0 33504 5740 1952 R 28.3 0.2 0:02.19 httpd
1905 apache 20 0 33504 5740 1952 R 28.3 0.2 0:01.99 httpd
1903 apache 20 0 33232 6968 3060 R 28.0 0.2 0:01.98 httpd
1910 apache 20 0 33240 6020 2248 S 11.5 0.2 0:02.85 httpd
2133 root 20 0 2656 1124 896 R 1.6 0.0 0:00.71 top
1 root 20 0 2864 1404 1188 S 0.0 0.0 0:03.99 init
分块的代码,尽管我不使用这个代码(只是简单的文件上传),它仍然会导致高 CPU 使用率
function sendRequest() {
//clean the screen
//bars.innerHTML = '';
var file = document.getElementById('fileToUpload');
for(var i = 0; i < file.files.length; i++) {
var blob = file.files[i];
var originalFileName = blob.name;
var filePart = 0
const BYTES_PER_CHUNK = 100 * 1024 * 1024; // 10MB chunk sizes.
var realFileSize = blob.size;
var start = 0;
var end = BYTES_PER_CHUNK;
totalChunks = Math.ceil(realFileSize / BYTES_PER_CHUNK);
alert(realFileSize);
while( start < realFileSize ) {
if (blob.webkitSlice) {
//for Google Chrome
var chunk = blob.webkitSlice(start, end);
} else if (blob.mozSlice) {
//for Mozilla Firefox
var chunk = blob.mozSlice(start, end);
}
uploadFile(chunk, originalFileName, filePart, totalChunks, i);
filePart++;
start = end;
end = start + BYTES_PER_CHUNK;
}
}
}
答案1
如果你要进行许多文件操作,那么这很有意义。你应该发布一些文件拆分操作的代码。