Я настраиваю сервер со следующими характеристиками:
* 4 процессора (AMD Opterons по 12 ядер каждый)
* 32 ГБ памяти
* 8 жестких дисков (двухпортовый SAS 15K)
* CentOS 5.5
* JBoss
* PostgreSQL
Вполне вероятно, что позже я отделю приложение от базы данных, но пока они будут находиться на одной машине. Я читал, что производительность PostgreSQL выигрывает от:
* RAID 10
* Отдельный раздел ОС
* Отдельный раздел xlog
* Отдельный раздел pgdata
Поскольку в моем единственном томе RAID 10, похоже, всего доступно 559808 МБ, это текущий план разделов:
* 337856 МБ для ОС
* 102400 МБ для pgdata
* 51200 МБ для xlog
* 68352 МБ для свопа
Вот несколько вопросов:
* Как выглядит мой план разделов?
* При установке CentOS, когда я перехожу к этапу настройки диска, мне нужно определить точки монтирования - что я должен ввести для раздела pgdata? (например, исх. этот пример устанавливает точки монтирования / pgdata1 )
* Что я должен ввести в качестве точки монтирования для раздела xlog?
* Для типа файловой системы предотвращение повреждения более важно, чем безупречная производительность, поэтому план состоит в том, чтобы использовать noatime, но оставить для параметров монтирования раздела значение «data = orders» - как вы думаете?
* Любые другие соображения?
Примечание. Вероятно, что общий размер всех баз данных в разделе pgdata в ближайшие несколько лет не превысит 20 ГБ.
Хорошо, давайте начнем. Используемый сервер базы данных и приложений не должен менять местами. Теперь я понимаю, что «подкачка не используется, например, части ядра и т. Д.», Но пространство подкачки 64 ГБ - это нелепо. Нет НИКАКОГО способа, которым компьютер может использовать это разумным образом с приличной скоростью. Слишком долго. Сократите это. Существенный. ОЧЕНЬ знаменательно. Вроде 8 ГБ или около того. Может быть, 12 или 16. Но просто нет возможности даже удаленно использовать те 64 ГБ, которые вы сейчас назначаете.
Надеюсь, вашему серверу придется много делать с точки зрения вычислений, потому что, хотя это и не жалко, это НЕ высокопроизводительный сервер базы данных. Плохие новости. ДЕЙСТВИТЕЛЬНО плохие новости. Один рейд 10 на все общие вещи - не лучшая идея. Но 6 дисков - это НЕ высокая производительность 15к или нет. У меня здесь меньший сервер db, на котором 6 дисков в RAID 10 только для данных. Что бы вы ни делали, с точки зрения транзакций, вы снова будете ограничены производительностью диска, если вы не сделаете OLAP. Дисковая подсистема никак не может запихнуть ОДИН 12-ядерный процессор, 4 из них абсолютно невозможно. В большинстве случаев одно 4-ядерное устройство может перегружать диски. На самом деле, лучше займитесь вычислениями.
Предложения:
Убедитесь, что вам нужно то, что вы покупаете. Я знаю, что Java может потреблять много ресурсов, но в этих измерениях? Вам ДЕЙСТВИТЕЛЬНО нужно 48 ядер? С этим справляется Centos? Linux DID имеет проблемы со слишком большим количеством ядер. Я знаю, что эти времена в основном прошли, но 48 ядер могут быть довольно трудными. Мне очень нравятся мощные серверы, но когда я обычно работаю с базами данных, их размер составляет 4 цифры вверх (1000 + ГБ), а дисковая подсистема имеет минимум 10, часто более 1000 дисков, чтобы прокормить этого монстра с необходимым бюджетом ввода-вывода. ИЛИ серверы предназначены для виртуализации.
Возможно, добавить больше оперативной памяти. 32 ГБ звучат впечатляюще, но для 48 ядер это, на мой взгляд, немного невысоко. Я предпочитаю использовать минимум 1-2 гигабайта НА ЯДРО.
Разделение одного большого тома RAID10 на несколько разделов не дает ничего полезного. Шаблоны использования дисков ОС, WAL и дисков базы данных достаточно различаются, чтобы их можно было разместить отдельно. диски делает PostgreSQL быстрее. Например, WAL - это все последовательные записи, поэтому наличие выделенного диска для этого может помочь с рядом вещей. Отдельные разделы на одном и том же большом томе диска не улучшают производительность одинаково.
В конечном счете, это не имеет значения, когда ваш набор данных настолько мал по сравнению с объемом оперативной памяти на вашем сервере. Для этого вам вообще не нужна высокопроизводительная установка диска, нужны только быстрые процессоры и оперативная память.
Единственное, о чем вы не упомянули, - это какой RAID-контроллер вы используете и есть ли у вас батарея для резервного копирования кеша. Это гораздо важнее, чем мелочи по разделам. Видеть Надежные записи ссылки на дополнительную информацию можно найти здесь.
Есть книга, PostgreSQL 9.0 Высокая производительность это очень хорошо описывает все тонкости высокопроизводительного PostgreSQL.
Стандартный ответ производительности - «протестируй и посмотри». Итак, если вы можете попробовать несколько разных конфигураций под нагрузкой и посмотреть, какая из них лучше для вашей нагрузки с вашими данными это будет «правильная» конфигурация.
С базой данных 20 ГБ вы можете поместить (почти) всю базу данных в кеш файловой системы и / или буферный кеш Postgresql. У вас может не быть даже такого количества физических операций ввода-вывода, когда сервер прогреется.
Возможно, хорошее место для начала - создать 2-х дисковое зеркало RAID 1 для ОС и использовать остальные 6 дисков в массиве RAID 10 для pgdata + swap. Пока у вас нет данных для резервного копирования, я не вижу необходимости разделять xlogs и pgdata. Эта настройка, по крайней мере, позволит вам переместить журнал на зеркальный диск, если вам действительно нужно.
То же самое и с вариантами крепления. noatime - почти всегда хорошая идея, но все остальное я бы оставил в покое, пока оно вам не понадобится.
Одна вещь, на которую следует обратить внимание в CentOS / RHEL, - это LVM. Вероятно, стоит задать еще один вопрос, но я никогда не использую LVM и вместо этого создаю простые разделы ext3. (Я очень надеюсь, что вы имели в виду аппаратный RAID для ваших дисков, а не LVM RAID)
Базы данных обычно связаны с вводом-выводом. Ничего не зная о вашем конкретном приложении, я бы отказался от трех процессоров и посмотрел на получение карты Fusion IO (или, возможно, SSD) для раздела pgdata.
Я бы также настроил RAID немного иначе. Шаблон использования xlog (последовательный) обычно будет отличаться от раздела pgdata (random). По этой причине я бы предложил разместить их на отдельных физических устройствах.