Настройка Postgresql на 16-Гб Linode VPS

Я использую выделенный PostgreSQL на 16GB Linode (Ubuntu 12.04 32bit). Я пытался использовать pgtune, но я столкнусь с ошибками в общей памяти. Т.е.

The PostgreSQL server failed to start. Please check the log output:
2014-02-10 08:32:39 EST FATAL:  could not create shared memory segment: Invalid argument
2014-02-10 08:32:39 EST DETAIL:  Failed system call was shmget(key=5432001, size=4107419648, 03600).
2014-02-10 08:32:39 EST HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 4107419648 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
    The PostgreSQL documentation contains more information about shared memory configuration

Так что я пошел дальше и начал дорабатывать SHMAX, но я действительно не уверен, для чего мне это устанавливать. Я надеялся, что pgtune сообщит мне или что я смогу найти документацию @ linode по этому поводу. Я предполагаю, что это значение в байтах? Я читал, что это должно быть что-то от 1/4 до 1/2 от общей памяти (то есть 4 или 8 ГБ), но также и то, что оно не должно превышать 4 ГБ, когда вы находитесь на 32-битной.

Любой совет? Что бы вы порекомендовали для настройки SHMAX и почему? Должен ли я отказаться от pgtune или передать ему максимальный параметр памяти?

Спасибо!

Детали памяти VPS:

             total       used       free     shared    buffers     cached
Mem:      16617352     334320   16283032          0      18132     208400
-/+ buffers/cache:     107788   16509564
Swap:       524284          0     524284

-- Обновить --

Миграция на 64bit в основном заставила все работать. SHMAX был принят (кстати, в байтах). Выяснив, что нужно установить, я просто пошел с половиной доступной оперативной памяти на коробке ("free -b" в Ubuntu, чтобы увидеть память в байтах).

Я в основном пошел с рекомендациями pgtune для остальных с несколькими незначительными изменениями.

apt-get install pgtune

1 ответ

Решение

Вы установили 32-разрядную операционную систему на машину с 16 ГБ ОЗУ. Это не сработает. Даже если технически 32-разрядная ОС может использовать более 4 ГБ ОЗУ, ни один процесс в операционной системе не может выйти за эту границу. Начните заново и установите 64-разрядную операционную систему, и эта проблема исчезнет (вместе со всеми другими проблемами, которые у вас возникнут).

Другие вопросы по тегам