Socket.io doesn't work properly

I made a realtime chart showing system load every second. It works fine in my local mechine but after I deploy it to the server, there is a long delay before the data is sent back from the server. Also, I excepted the data is sent back every second but it sends data in a irregular interval.

io.sockets.on('connection',function (socket) {
    var sysinfo = setInterval(function(){
        socket.emit('system_info',{
            time:Date.now(),
            load:os.loadavg(),
            memory:os.totalmem()-os.freemem()
        });
    },3000);

    socket.on('disconnect',function(){
        clearInterval(sysinfo);
    });
});

Here is the chart

Here is the source code

Well, you've describe it as "every second," but your interval is set to 3000 or "every 3 seconds."

For the "irregular interval," intervals are not guaranteed to be exact.

From Globals:

Note that the actual interval may vary, depending on external factors like OS timer granularity and system load. It's never less than ms but it may be longer.

From Timers:

It is important to note that your callback will probably not be called in exactly delay milliseconds - Node.js makes no guarantees about the exact timing of when the callback will fire, nor of the ordering things will fire in. The callback will be called as close as possible to the time specified.