Недавно я установил munin-node на сервере CentOS. Все работало нормально, пока я не попытался добавить плагин apache (который отлично работает).
По какой-то странной причине плагины mysql для munin, которые раньше работали, перестали работать ... Я теперь получаю странную ошибку, когда запускаю плагин с munin-run. Например
munin-запустить mysql_files_tables
возвращает меня
Ошибка IPC :: ShareLite store (): идентификатор удален в /usr/lib/perl5/vendor_perl/5.8.8/Cache/SharedMemoryBackend.pm, строка 156
но иногда он также возвращается
table_open_cache.value 64
Open_files.value 58
Open_tables.value 64
Opened_tables.value 19341
но через некоторое время он вернется к предыдущей ошибке.
У меня нет никаких знаний о IPC или библиотеке ShareLite, поэтому я не знаю, нужно ли начинать искать. Поскольку это модуль, связанный с общей памятью, я попытался отследить сегменты общей памяти с помощью ipcs без особого успеха.
Я еще не перезагружал машину, так как она используется для многих проектов (я, очевидно, хотел бы иметь возможность диагностировать проблему, не требуя перезапуска, если это возможно).
Кто-нибудь сталкивался с этой проблемой? (быстрый поиск в Google не дал соответствующей помощи)
Спасибо за помощь!
Я решил свою проблему, но я еще не нашел точной причины / источника, поэтому я все еще открыт для получения информации от других.
В основном плагины mysql для munin написаны на perl, используйте IPC :: ShareLite.
С помощью Strace Мне удалось определить, что проблема в том, что приложение застревает на семопе с определенным идентификатором семафора. С помощью ipcs и ipcrm, Мне удалось удалить семафор и снова запустить плагин правильно.
Strace дает мне полусухой как первый аргумент, переданный в семоп. С участием ipcrm -s semid, Я удаляю семафор из системы, что устраняет проблему.
Таким образом, я убежден, что что-то пошло не так с семафором (возможно, спор, но я не понимаю, из чего ...).
Столкнулся с этой проблемой несколько дней назад. Моим решением было заменить Cache::SharedMemoryCache
с участием Cache::FileCache
в mysql_
плагин, как показано ниже:
*** mysql_ 2015-12-20 15:13:12.000000000 +0100
--- mysqlnew_ 2015-12-20 15:12:43.000000000 +0100
*************** use Munin::Plugin;
*** 143,149 ****
my $has_cache;
BEGIN {
! eval 'require Cache::SharedMemoryCache';
$has_cache = $@ ? 0 : 1;
}
--- 143,149 ----
my $has_cache;
BEGIN {
! eval 'require Cache::FileCache';
$has_cache = $@ ? 0 : 1;
}
*************** my %cache_options = (
*** 172,178 ****
my $shared_memory_cache ;
if ($has_cache)
{
! $shared_memory_cache = Cache::SharedMemoryCache->new(\%cache_options)
or die("Couldn't instantiate SharedMemoryCache");
}
--- 172,178 ----
my $shared_memory_cache ;
if ($has_cache)
{
! $shared_memory_cache = Cache::FileCache->new(\%cache_options)
or die("Couldn't instantiate SharedMemoryCache");
}