Я строю простой TCP -сервер в node.js, чтобы получить большие файлы PDF от клиентов. Все работает нормально, когда я отправляю данные с одной и той же машины (Localhost) - я получаю большие куски 65536 байтов, и файл сохраняется почти мгновенно. медленное), хотя мое интернет -соединение хорошее (около 64 Мбит /с). < /p>
для того, чтобы быть специфическим: < /p>
Локальное соединение: кусочки ~ 65536 байт, общее время передачи ≈ 1 секунду < /p>
Удаленное соединение: кусочки ~ 1436. Упрощенная версия моего кода сервера TCP: < /p>
const net = require("net");
const crypto = require("crypto");
const fs = require("fs");
require("dotenv").config();
const server = net.createServer((socket) => {
socket.setNoDelay(true);
const chunks = [];
socket.on("data", (data) => {
chunks.push(data);
console.log(data.length); // 65536 for localhost, 1436 for remote clients.
if (data.toString("utf8").endsWith("DONE")) {
const bytes = Buffer.concat(chunks).slice(0, -(Buffer.from("DONE", "utf8").length));
console.log(bytes.length); // 20 MB
fs.writeFile(crypto.randomUUID() + ".bin", bytes, (err) => socket.write(JSON.stringify({ success: !err })));
}
});
});
server.listen(process.env.PORT, process.env.DEDICATED_SERVER_IPV4, () => console.log("Running..."));
< /code>
Вот более простая версия моего клиентского кода TCP: < /p>
const net = require("net");
const fs = require("fs");
require("dotenv").config();
fs.readFile("file.bin", (err, bytes) => {
if (!err) {
console.log(bytes.length); // 20 MB
const client = net.createConnection({ port: process.env.PORT, host: process.env.DEDICATED_SERVER_IPV4 }, () => {
client.write(bytes);
client.write("DONE");
});
client.on("data", (data) => console.log(data.toString()));
} else console.error(err.stack);
});
< /code>
Что я пробовал: < /p>
Увеличение Highwatermark до 1 мб. < /p>
называется socket.setnodelay (true), чтобы отключить алгоритм Nagle. Разница - это локальный против удаленного клиента. < /p>
Мои вопросы:
Почему Data.Length снижается до ~ 1436 байтов и является ли передача файла очень медленной, когда клиент удален? TCP -сервер для более быстрых больших загрузки файлов за удаленными подключениями?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... te-clients
Как повысить производительность TCP -сервера для больших загрузки файлов от удаленных клиентов? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как повысить производительность при обработке больших наборов данных с петлями в Python?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как повысить производительность при обработке больших наборов данных с петлями в Python?
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-