Node.js事件循环因无明显原因而被阻止

时间:2017-07-13 03:41:16

标签: node.js event-loop

我使用https://www.npmjs.com/package/blocked检查事件循环是否被阻止。

这是我正在运行的代码:

require('dotenv').config();
var blocked = require('blocked');
var mysql = require('mysql');
var cassandradriver = require('cassandra-driver');
var timeuuid = require('cassandra-driver').types.TimeUuid;
var redis = require('redis');

var pool = mysql.createPool({
    connectionLimit: 50,
    host: 'localhost',
    user: process.env.username,
    password: process.env.password,
    database: 'database1',
    charset: 'utf8mb4'
});

var authProvider = new cassandradriver.auth.PlainTextAuthProvider('username', 'password');
var cassclient = new cassandradriver.Client({
    contactPoints: ['127.0.0.1:9042'],
    keyspace: 'test',
    authProvider: authProvider
});

var redisdb = redis.createClient({
    password: 'password'
});

var redisdb1 = redis.createClient({
    password: 'password'
});
redisdb1.select(1);

var redisdb2 = redis.createClient({
    password: 'password'
});
redisdb2.select(2);

blocked(function(ms){
  console.log('BLOCKED FOR %sms', ms | 0);
});

如果我让这段代码继续运行,我会在控制台中看到以下内容(每台之间约1分钟):

BLOCKED FOR 12ms
BLOCKED FOR 10ms
BLOCKED FOR 18ms
BLOCKED FOR 10ms
BLOCKED FOR 14ms

如果我让它继续运行,我会每1-2秒收到一条消息,说事件循环被阻止。这一切都在10-25毫秒之间变化。

有没有理由发生这种情况?我甚至都没有查询MySQL,Cassandra或redis以及事件循环被阻止。

如果我误解了blocked套餐,请告诉我。

任何帮助都将不胜感激。

0 个答案:

没有答案