Ошибки после обновления с 1.0.7 до 1.2.0

Started by inspirit, May 29, 2012, 12:12:19 PM

Previous topic - Next topic

inspirit

Проблема появилась именно после обновления.

База данных и сервер разнесены физически по разным серверам.

Смысл в том что когда выбираешь какой нибудь predefined graph котрый работает с DCI которые приходят от какого нибудь агента. То в первый момент вылетает ошибка - Unable to retrieve collected data: Database failure.

Потом или нажимаешь - F5 или по refresh time графики появляются по одному.

По данным snmp - графики рисуются нормально.

Обновление агента до версии 1.2.0 не помогло. Как отловить причину подобного поведения?

inspirit

Если перезапускать сервер. То некоторое время ~  минут 30 - 1 час - все работает нормально. А потом опять эта проблема.

В логах вот что пишет в момент проблемы.

[29-May-2012 13:22:52] SQL query failed (Query = "SELECT idata_timestamp,idata_value FROM idata_211856 WHERE item_id=? AND idata_timestamp>=? AND idata_timestamp<=? ORDER BY idata_timestamp DESC LIMIT 200000"): MySQL server has gone away

Что бы это значило?



kozlov_ao

Подтверждаю, проблема с графиками присутствует.

blacat

Аналогично на 1.2.0 часто ловлю "MySQL server has gone away"
Мускуль тюнил по всякому. Не спасает.
Решает только рестарт netxmsd.

Victor Kirhenshtein

А в логах mysql'а можно что-то найти? NetXMS сервер использует пул соединений с сервером - может ли быть так, что на сервере стоит маленький idle time для соединений?

kozlov_ao

Я не админ БД, поэтому крайне тупой вопрос:
Где и как это посмотреть? mysql не ведет свой лог в текстовом виде...(хотя может это особенности настройки)...

Alex Kirhenshtein

Путь к файлу лога можно посмотреть таким SQL запросом: mysql> show global variables like 'log_error';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| log_error     | /var/log/mysql/error.log |
+---------------+--------------------------+
1 row in set (0.00 sec)


Проверьте параметр log_warnings: mysql> show global variables like 'log_warnings';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings  | 1     |
+---------------+-------+
1 row in set (0.00 sec)


Если значение меньше двух, то поменяйте:mysql> set global log_warnings = 2;
Query OK, 0 rows affected (0.00 sec)


После чего перезапустите netxmsd и повторите ошибку. Рестарт mysql не требуется.

blacat

Виктор, я таймауты по всякому менял. и увеличивал сильно и сокращал.
Результат тот же.
В логах мускуля чисто, влогах netxmsd описанное выше.

Сейчас попробую еще ворнингов в логе мускуля повключать...

kozlov_ao

Сделал все, что писали раньше, но результата нет...
в логах ошибок mysql-пусто, в логах NetXMS-ловим те-же ошибки.
в логах запросов mysql вылазиет вот это:

120531 16:43:11       4 Prepare     [1512] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=? AND idata_timestamp>=? AND idata_timestamp<=? ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Execute     [1512] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=122 AND idata_timestamp>=1338464782 AND idata_timestamp<=1338468382 ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Prepare     [1513] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=? AND idata_timestamp>=? AND idata_timestamp<=? ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Execute     [1513] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=123 AND idata_timestamp>=1338464782 AND idata_timestamp<=1338468382 ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Prepare     [1514] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=? AND idata_timestamp>=? AND idata_timestamp<=? ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Execute     [1514] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=197 AND idata_timestamp>=1338464782 AND idata_timestamp<=1338468382 ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Prepare     [1515] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=? AND idata_timestamp>=? AND idata_timestamp<=? ORDER BY idata_timestamp DESC LIMIT 200000
                      4 Execute     [1515] SELECT idata_timestamp,idata_value FROM idata_131 WHERE item_id=196 AND idata_timestamp>=1338464782 AND idata_timestamp<=1338468382 ORDER BY idata_timestamp DESC LIMIT 200000
120531 16:43:14       3 Prepare     [64244] SELECT var_value FROM config WHERE var_name=?
                      3 Execute     [64244] SELECT var_value FROM config WHERE var_name='CapabilityExpirationTime'


kozlov_ao

Никому не удалось побороть эту проблему?

inspirit

Пока нет. Логи выглядят нормально. Данные в базу тоже пишутся нормально. Непонятно куда копать.

Victor Kirhenshtein

Я внес некоторые изменения в MySQL драйвер. Посмотрим, поможет или нет. Сегодня вечером сделаю сборку.

kozlov_ao


blacat

MySQL наконец-то что-то сказал в логах на это:

120605  5:22:09 [Warning] Aborted connection 26096 to db: 'netxms' user: 'netxms' host: '127.0.0.1' (Got timeout reading communication packets)

Victor Kirhenshtein

Сделал версию 1.2.1. Если я правильно определил в чем проблема, то должно заработать. :)