Pull to refresh

Comments 8

Честно говоря не понял, а зачем вообще это нужно? Чем не нравится уже работающие реализации?

скорее всего типа "могём... умеем"

Стрипать надо не через "-ldflags "-s -w" ", а просто утилитой strip, так обычно бинарник меньше выходит (и это официально поддерживается).

Я совсем не программист, но нужна была похожая реализация для мониторинга большого количества устройств со сбором дополнительной статистики. Сделал используя библиотеку pro-bing и основная проблема в том, что запуская сотни горутин на слабом железе, мы получаем RTT и stddev отличающийся от обычного одиночного пинга на десятки миллисекунд, что иногда критично и выглядит не сильно красиво. Я так понимаю, что это происходит из-за реализации подсчета RTT через time.Since и времени на переключение контекста между разными горутинами. Тестировали ли вы этот момент?
Как можно оптимизировать это и получать RTT близкий к одиночному пингу не закидывая все железом с большим количеством CPU?

По коду, думаю, в некоторых местах можно if/else поменять на if/early_return для читаемости и некоторые части вынести в функции с именем по контексту действий. А так очередной ping, каких много. Можно было сделать массовый «ping-mass» или ping-db как хранилище данных. Вообще есть проект GNU coreutils на golang https://github.com/ericlagergren/go-coreutils, правда, заброшенный, но, может, кому-то будет интересен. На Rust аналогичный проект активно развивается.

Golang славится своей многопоточностью. Если бы вы реализовали аналог fping - цены бы вам не было.

Если на сервере отключён IPv6, как класс (в /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"), то fping не работает даже с указанием ключа -4

$ sudo fping -4 -g 192.168.3.0/24
(null): can't create raw socket (must run as root?) : Address family not supported by protocol

У меня, как у админа, выбор:

  1. или мягче отключить IPv6 с сохранением стека, но без адресов - ipv6.disable_ipv6=1

  2. или заменить fping на другое

Sign up to leave a comment.

Information

Website
yadro.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия
Representative
Ульяна Соловьева