После преодоления рубежа в 70 объектов натолкнулся на проблему, а именно: could not send data to client: Unknown winsock error 10055.
Конфигурация сервера: Windows XP Pro SP3, Мираж 4.8 RC5 (было проверено также на RC6), 765 Мб оперативной памяти (было расширено до 2 ГБ). PostgreeSQL 8.3.18 (впоследствии перешёл на 8.4.11). Ничего лишнего на сервере не стоит.
Лечится пока что только перезагрузкой всей операционной системы. Перезапуск сервера Миража или службы PostgreeSQL после падения, проблему не решили (PostgeSQL вообще не стартует).
Когда памяти было 765 мб (после таких падений) при запуске диспетчера задач или других приложений ОС отображала на экране "Не хватает системных ресурсов". После увеличения до 2 гб, ситуация улучшилась но ровно на 2 дня. 3 дня не было никаких падений.
При падении сервера PostgreeSQL в процессах отображается нормальное состояние распределения памяти (это когда уже было 2 гб на борту). Это вводит в заблуждение. Журнал Windows XP фиксирует нехватку системных ресурсов и переполение буфера Winsock (10055 ошибка).
Почитав, наткнулся на несколько советов:
- поставить программу poolmon.exe и посмотреть утечку памяти
- второй вариант увеличить в postgresql.conf значение переменной shared_buffers со стандартных 32 МБ. Также поиграться с переменными work_mem, maintenance_work_mem и т.д.
- поиграться с параметрами автовакуума в postgresql.conf
- полностью перебить базу данных Миража (убрав события), но это край
Также пишут на других форумах, что дело в ОС, что много соединений, но я это сразу отметаю, т.к. тестировал и доводил до 2 000 соединений (о чём я здесь писал), стабильно держал.
Может, кто встречался с такой ошибкой и знает как её устранить или буду рад, если направят куда вначале копать.
Лог PostgreSQL
28 апреля 2012
2012-04-28 13:58:51 KRAT LOG: database system was shut down at 2012-04-28 11:53:27 KRAT
2012-04-28 13:58:51 KRAT LOG: database system is ready to accept connections
2012-04-28 13:58:51 KRAT FATAL: the database system is starting up
2012-04-28 13:58:51 KRAT LOG: autovacuum launcher started
2012-04-28 14:04:43 KRAT LOG: received fast shutdown request
2012-04-28 14:04:43 KRAT LOG: aborting any active transactions
2012-04-28 14:04:43 KRAT LOG: autovacuum launcher shutting down
2012-04-28 14:04:43 KRAT LOG: WAL writer process (PID 3476) was terminated by exception 0xC0000142
2012-04-28 14:04:43 KRAT HINT: See C include file "ntstatus.h" for a description of the hexadecimal value.
2012-04-28 14:04:43 KRAT LOG: terminating any other active server processes
2012-04-28 14:04:43 KRAT LOG: abnormal database system shutdown
2012-04-28 14:07:37 KRAT LOG: database system was interrupted; last known up at 2012-04-28 13:58:51 KRAT
2012-04-28 14:07:37 KRAT LOG: database system was not properly shut down; automatic recovery in progress
2012-04-28 14:07:37 KRAT LOG: record with zero length at 0/13C60198
2012-04-28 14:07:37 KRAT LOG: redo is not required
2012-04-28 14:07:38 KRAT LOG: database system is ready to accept connections
2012-04-28 14:07:38 KRAT LOG: autovacuum launcher started
2012-04-28 14:57:54 KRAT LOG: could not receive data from client: Unknown winsock error 10061
2012-04-28 14:57:54 KRAT LOG: unexpected EOF on client connection
29,30 апреля 2012 - пусто (дни прошли без проишествий)
31 апреля 2012
2012-05-01 16:56:10 KRAT LOG: could not send data to client: Unknown winsock error 10055
2012-05-01 16:57:06 KRAT WARNING: pgstat wait timeout
...
2012-05-01 17:06:14 KRAT WARNING: pgstat wait timeout
2012-05-01 17:08:10 KRAT LOG: could not receive data from client: Unknown winsock error 10061
2012-05-01 17:08:10 KRAT LOG: unexpected EOF on client connection
2012-05-01 17:09:20 KRAT LOG: received fast shutdown request
P.S.: Для сравнения: 765 мб - хватило на 1 день, при 2 гб - хватило на 3 дня.
P.S.2: Пробовал отключать автовакуум (autovacuum = off), но он его всё равно запускает.