Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
14.05.2004, 14:03
|
|||
---|---|---|---|
|
|||
Управление приоритетом postgres-процессами |
|||
#18+
На PostgreSQL работает биллинг. Возникла ситуация, когда необходимо установить разные приоритеты процессов postgres для различных типов клиентских подключений. - Процессы postgres, обслуживающие железо должны работать с макс приоритетом - Процессы postgres, обслуживающие SELECTы для статистики - меньший приоритет - Наконец, backup - минимальный проритет Вопросы: 1) есть ли какие-то стандартные средства на стороне клиента, которые позволили бы изменить PRI соответствующего процесса postgres или это невозможно в принципе? 2) нельзя ли где-нибудь в конфиге указать: для клиента А - проиритет процесса postgres - 0, для клиента Б - приоритет +10 и т.д.? P.S. 1) Большинство клиентов работают на той же машине, что и сервер Postgre 2) Некрасиво как-то вычислять PID postgres'a по сокету клиента и делать ему renice Заранее благодарен за любую информацию ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.05.2004, 07:26
|
|||
---|---|---|---|
Управление приоритетом postgres-процессами |
|||
#18+
> На PostgreSQL работает биллинг. единомышленник... ! :) Честно говоря, кажется такой возможности в PG нет. В Oracle есть на этот предмет красивая вещь - resource plan... Наверное, да, единственный вариант - после connect() узнавать PID соотв-го процесса и делать renice(). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.05.2004, 20:15
|
|||
---|---|---|---|
|
|||
Управление приоритетом postgres-процессами |
|||
#18+
В MS-SQL я, кстати, тоже не нашел решения этой проблемы Oracle ... - это оч серьезно по-моему (еще пол-года разбираться что к чему :-) Коль не получается в лоб - будем делать как получится, т.е. по лбу (под Win 2000 не получилось никак :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.05.2004, 17:31
|
|||
---|---|---|---|
|
|||
Управление приоритетом postgres-процессами |
|||
#18+
сам и отвечаю на свой вопрос, может кому пригодится: - есть встроенная функция pg_backend_pid(), которая возвращает pid backend-процесса postgres - есть такой процедурный язык plperl :-) что нужно сделать... 1) добавляем поддержку языка plperlu (plperl не умеет взаимодействовать с ОС из соображений безопасности) 2) создаем функцию изменения приоритета backend-процесса CREATE OR REPLACE FUNCTION renice(int4, int4) RETURNS int4 AS ' $pid = shift; $nice = shift; system("renice $nice -p $pid"); return $?>>8; END; ' LANGUAGE 'plperlu'; 3) в клиентском приложении после коннекта вызываем ее: select renice(pg_backend_pid(), 19); Вот и все... Проверено на Postgre SQL Server 7.3.4 на ASP Linux 9.2 P.S. Поскольку backend-процесс работает от имени юниксового юзера postgres, то таким способом можно только поднять NICE, что в моей ситуации приемлемо ... |
|||
:
Нравится:
Не нравится:
|
|||
|
31.05.2004, 13:53
|
|||
---|---|---|---|
Управление приоритетом postgres-процессами |
|||
#18+
каковы результаты? afaik приоритизация ввода-вывода в ядре 2.4 отсутствует (насчет 2.6 не уверен) - то есть renice не будет влиять на дисковый ввод-вывод (а он вполне может оказаться решающим) да и ещё вопрос - backend за всю свою жизнь общается только с одним клиентом? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.06.2004, 11:52
|
|||
---|---|---|---|
Управление приоритетом postgres-процессами |
|||
#18+
Здорово. Мне понравилась простота, надо это включить в FAQ на PostgreSQL.org :)) Но думаю эту функцию можно сделать еще проще : Код: plaintext 1. 2. 3. 4. 5. 6.
$$ - встроенная perl-переменная, которая возвращает pid текущего процесса. Надо проверить, должно прокатить. Соотв-но вызов функции будет следующий: Код: plaintext
:) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.06.2004, 12:18
|
|||
---|---|---|---|
Управление приоритетом postgres-процессами |
|||
#18+
Вариант с $$ не работает. Видимо, возвращается pid не того, чего надо :-( Есть одно "но" в таком способе - можно только уменьшать приоритет - Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
но, конечно, эта особенность не имеет отношения к PostgreSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=2007840]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 307ms |
total: | 448ms |
0 / 0 |