4Manuals

  • PDF Cloud HOME

重新启动后,节点JS NET和HTTPS模块的处理请求非常缓慢 Download

    如何删除外部索引并合并内部json Mocha-无法实现TestFunction接口方法 如何使用ffmpeg创建带下划线的水印文本 如何将自定义错误从Lambda发送到Api网关 使用Node和Python哈希页面源时的区别 构建StaticInjectorError时出现Angular 7 如何设置偏执狂:sequelize中的所有查询都为false? 猫鼬-删除后不会更新“唯一” 如何从电子桌面应用程序向php网站发送和接收数据? 使用Socket.io会议室:两个人随机加入一个聊天室,我应该动态创建会议室还是依靠每个用户的socket.id吗?

我们有一个使用NodeJS的GPS设备套接字处理服务器,该服务器将接收到的HTTPS请求发送到Apache安装的服务器,并将数据保存到MySQL数据库中。当我们重新启动NodeJS服务器时,请求处理速度真的很慢。我们有700台设备连接到服务器。在高峰时段,每秒30-40个请求可以在从Concox GPS设备发送的服务器中处理。几个小时后,问题自动解决。请执行指南,如何解决此问题以及所需的详细信息以共享以进行监控?以前我们认为Mysql和Apache服务器是问题所在。但是后来我们发现NodeJS服务器是我们错误处理它的源。到目前为止,我们还没有实现队列机制。

我们使用this NPM repository

使用已实现的GPS跟踪器

下面的代码将GPS坐标发送到Apache服务器,

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();
    }

NPM模块使用 net.createServer 模块从GPS设备接收GPS坐标,下面的代码描绘了如何在处理GPS设备请求的模块部分中创建连接,

    _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.

我们正在使用Cloudflare来解析DNS,这是否会对太多请求发布到Apache服务器产生影响?

我们无法找到问题所在的位置? NET模块是否无法处理重启后无法处理连接泛洪的计数,还是HTTPS请求模块向Apache发送数据的信息都堆积在队列中。甚至在高峰时段,只有当服务器重新启动后,服务器才能正常运行时,才会处理60-70个请求,许多小时后,该请求就会恢复正常。

队列可以解决问题或增加服务器大小吗?还是我们没有尽最大努力处理节点?请帮助我们解决问题。

0 个答案:

没有答案



Similar searches
    如何在Rust中将`Fn`特征与`impl trait`返回类型一起使用? 使用shellcode调用x86本地函数 我可以为在LiveCycle Designer中创建的PDF表单创建多个用户登录名吗 具有行距的行具有更高的高度 无服务器Cloudwatch事件显示为已加密