Я использую выделенный PostgreSQL на Linode объемом 16 ГБ (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
Переход на 64-битную версию в основном заставил все работать. SHMAX принимается (кстати, в байтах). Решив, что установить, я просто установил половину доступной оперативной памяти в коробке («free -b» в Ubuntu, чтобы увидеть память в байтах).
Я в основном придерживался рекомендаций pgtune для остального с парой незначительных изменений.
apt-get install pgtune
Вы установили 32-разрядную операционную систему на машину с 16 ГБ ОЗУ. Это не сработает. Даже если 32-разрядная ОС может технически использовать более 4 ГБ ОЗУ, ни один процесс в операционной системе не может выйти за эту границу. Начните заново и установите 64-битную операционную систему, и эта проблема исчезнет (вместе со всеми другими проблемами, которые могут возникнуть у вас).