我们有一个使用NodeJS的GPS设备套接字处理服务器,该服务器将接收到的HTTPS请求发送到Apache安装的服务器,并将数据保存到MySQL数据库中。当我们重新启动NodeJS服务器时,请求处理速度真的很慢。我们有700台设备连接到服务器。在高峰时段,每秒30-40个请求可以在从Concox GPS设备发送的服务器中处理。几个小时后,问题自动解决。请执行指南,如何解决此问题以及所需的详细信息以共享以进行监控?以前我们认为Mysql和Apache服务器是问题所在。但是后来我们发现NodeJS服务器是我们错误处理它的源。到目前为止,我们还没有实现队列机制。 下面的代码将GPS坐标发送到Apache服务器, NPM模块使用 net.createServer 模块从GPS设备接收GPS坐标,下面的代码描绘了如何在处理GPS设备请求的模块部分中创建连接,
服务器详细信息 我们正在使用Cloudflare来解析DNS,这是否会对太多请求发布到Apache服务器产生影响? 我们无法找到问题所在的位置? NET模块是否无法处理重启后无法处理连接泛洪的计数,还是HTTPS请求模块向Apache发送数据的信息都堆积在队列中。甚至在高峰时段,只有当服务器重新启动后,服务器才能正常运行时,才会处理60-70个请求,许多小时后,该请求就会恢复正常。 队列可以解决问题或增加服务器大小吗?还是我们没有尽最大努力处理节点?请帮助我们解决问题。function postData(device_obj, device_id, items){
const query = JSON.stringify({
'device_id': ***Device ID***,
'items': ***Data to post***,
});
const options = {
hostname: 'Domain Name',
port: 443,
path: '***URL***',
method: 'POST',
pool: false,
headers: {
'Connection': 'keep-alive',
'Content-Type': 'application/json',
'Content-Length': query.length
}
};
var request = https.request(options, (res) => {
res.on('data', (data) => {
}).on('end', () => {});
res.on('error', (e) => {
console.error('Response :: '+e);
});
});
request.on('error', (e) => {
console.error('Request :: '+e);
});
request.write(query);
request.end();
}
_this.server = net.createServer(function(connection){
connection.device = new Device(_this.getAdapter(), connection, _this);
_this.devices.push(connection);
connection.on('data', function(data){
connection.device.emit('data', data);
});
connection.on('error', function(error){
console.error('Socket :: '+error);
});
connection.on('end', function(){
_this.devices.splice(_this.devices.indexOf(connection), 1);
connection.device.emit('disconnected');
});
callback(connection.device, connection);
connection.device.emit('connected');
}).listen(opts.port);
Ubuntu server with 1GB RAM and 1 Core processor.
0 个答案:
没有答案