我使用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
套餐,请告诉我。
任何帮助都将不胜感激。