Thursday, December 20, 2018

Pinger - система проверки ресурсов


Данная утилита предназначена для тестирования сетевых ресурсов посредством ping'a  и tcping'a. Идея поступила от отдела тех поддержки - их постоянно просят проверить некие сервера, которые как кажется пользователям испытывают серьезные проблемы с нагрузкой, не важно какой - будь то сетевые проблемы или проблемы с базой.
Что решает:
По адресам всем делается ping - 50 запросов
По первому адресу делается tcping с параметрами:   tcping -t -d -j 5 10.30.16.52 80
По первому адресу делается tracert –d %ip% 
По всем действия формируется лог - создается при первом использовании, далее затирается.

Внутри архива сам джарник - утилита и программа tcping.exe.

Ссылка
https://drive.google.com/drive/folders/18CT433y-KInJ_AB0HprNXb4oFRmPV1Sw
Плюс, гитхаб
https://github.com/dgigalo/Pinger

Комментарии приветствуются. Успехов!

Tuesday, July 17, 2018

MongoError: Topology was destroyed

Разбирался тут 2 дня почему не получается выполнить 2 асинхронных запроса в mongoDB.
Грешил на функции обратного вызова, потом на промеси.Ну не может такого быть!
Собственно есть коллекция:
const collection = db.collection('some');
Выполняю 2 запроса в нее. если выполнять параллельно - все гут, вызываю из
первой функции колбэк, вылетает ошибка:
MongoError: Topology was destroyed

Думаю, может колбэки устарели, переделал в промиси, та же песня. Случайно наткнулся на
размышления одного человека. Он задался вопросом, а когда закрывается соединение
в базу? меня осенила идея, а действительно - я закрываю соединение только когда
код полностью выполнится. И это оказалось ошибкой.
Выполняя первое промиси и не дожидаясь второго, который стартует сразу
после успешного выполнения первого, закрывается соединение с БД. 0_0

CountCollectionDocuments(collection).then(function(count) {
getSomeData(collection,data).then(function(res){
callback(res, count, null)
client.close();
}).catch(function(error){
callback(error)
client.close();
})
})
.catch(function(error){
callback(error)
client.close();
});

Вот с таким выполнением не нарушается структура БД и не закрываются соединения.

Успехов!