Порты:postgresql80-server
postgresql80-client
pam-pgsql
Ось:FreeBSD 6.2
Суть в чем. При запускe 010.pgsql.sh (без разницы, через Rc.d или вручную) он создает 100 процессов sh от имени юзеров operator и pgsql, сжирая память и свап за 10 сек. В итоге система валится с ошибкой "swap_pager_getswapspace: failed" - за секунду до этого top показывает 100% загрузку памяти, свапа и камня.
Вопрос. Где грабли?
Что за файл 010.pgsql.sh?
>Что за файл 010.pgsql.sh?/usr/local/etc/rc.d/101.pgsql.sh
стартует сам sql при загрузке либо по запросу
создается инсталлером порта
1. Вы уверены что говорите про 6.2?
2. В исходниках данного файла нет, в дереве портов - тоже, в списке устанавливаемых файлов (/usr/ports/databases/postgresql80-server/pkg-plist-server) поныне.
>1. Вы уверены что говорите про 6.2?
>2. В исходниках данного файла нет, в дереве портов - тоже, в
>списке устанавливаемых файлов (/usr/ports/databases/postgresql80-server/pkg-plist-server) поныне.Cам удивился, но факт есть факт, при сборке сервера сей файл появляется в /usr/local/etc/rc.d/ и исполняется при загрузке системы.
Именно этот порт, да.
Скиньте сюда содержимое.
>Скиньте сюда содержимое.#!/bin/sh
# $FreeBSD: ports/databases/postgresql80-server/files/pgsql.sh.tmpl,v 1.22 2006/05/23 21:18:58 girgen Exp $
#
# PROVIDE: postgresql
# REQUIRE: LOGIN
# KEYWORD: shutdown
<comment skip>prefix=/usr/local
. /etc/rc.subr
command=${prefix}/bin/pg_ctlload_rc_config postgresql
# set defaults
postgresql_enable=${postgresql_enable:-"NO"}
postgresql_flags=${postgresql_flags:-"-w -s -m fast"}
postgresql_user=pgsql
eval postgresql_data=${postgresql_data:-"~${postgresql_user}/data"}
postgresql_class=${postgresql_class:-"default"}name=postgresql
rcvar=`set_rcvar`
command_args="-D ${postgresql_data} ${postgresql_flags}"
extra_commands="reload initdb"
start_cmd="postgresql_command start"
stop_cmd="postgresql_command stop"
restart_cmd="postgresql_command restart"
reload_cmd="postgresql_command reload"
status_cmd="postgresql_command status"initdb_cmd="postgresql_initdb"
postgresql_command()
{
su -l ${postgresql_user} -c "exec ${command} ${command_args} ${rc_arg}"
}postgresql_initdb()
{
su -l -c ${postgresql_class} ${postgresql_user} -c "exec ${prefix}/bin/initdb -D ${postgresql_data}"
}run_rc_command "$1"
Все верно. Копайте под пользователя operator - каким боком он там всплывает?
>[оверквотинг удален]
>
>FreeBSD 6.2
>
>Суть в чем. При запускe 010.pgsql.sh (без разницы, через Rc.d или вручную)
>он создает 100 процессов sh от имени юзеров operator и pgsql,
>сжирая память и свап за 10 сек. В итоге система валится
>с ошибкой "swap_pager_getswapspace: failed" - за секунду до этого top показывает
>100% загрузку памяти, свапа и камня.
>
>Вопрос. Где грабли?up.
я пожалуй попробую предложить совсем не политкорректный способ
1 15-30 мин установка и настройка Debian
2 +10 мин установка и настройка postgresql
3 + ~ 10 минут на перенос данных
4 + 10 минут проверка
итого около 60 минесть ещё способ
найти серез форум товарища с ником johnjoy и очччень его попросить -- но в вашем случае я сомневаюсь что он станет вам помогать ... но , чего только в жизни не бывает
>[оверквотинг удален]
>1 15-30 мин установка и настройка Debian
>2 +10 мин установка и настройка postgresql
>3 + ~ 10 минут на перенос данных
>4 + 10 минут проверка
>итого около 60 мин
>
>есть ещё способ
>найти серез форум товарища с ником johnjoy и очччень его попросить --
>но в вашем случае я сомневаюсь что он станет вам помогать
>... но , чего только в жизни не бываетСпособ не лишен смысла, НО pgsql используется в связке с другим ПО. И никакого желания переносить связку из 10 программ на другую ОС, предварительно скачав и ОС и и linux версии программ у меня нет. А при условии того, что железо - p2mmx, 128ram, 7gb HDD, и с Дебианом я работал только поверхностно, решение становится нереальным.
И вообще, вам не кажется, что сие - оффтоп?
Нет - это нелешенное смысла предложение, если вы не хотите подумать сами - дебиан вам в руки. У вас где-то возникает цикл в шелловском скрипте с форком внутри и аномальное свечение пользователя оператор. Отталкиваясь от этого и знания что стартовые скрипты не форкуют за демона, могу предложить вам не еать мозг окружающим и вспомнить где-что писали, либо вывалить сюда всю инсталляционную байду, включая: содержимое rc.conf, строки файла /etc/master.passwd для pgsql и operator, потереть все файлы в домашнем каталоге юзера pgsql, начинающиеся с '.' (.profile, etc), ..., после запуска стартового скрипта сделать pstree (из портов) и/или ps -auxw.
>Нет - это нелешенное смысла предложение, если вы не хотите подумать сами
>- дебиан вам в руки. У вас где-то возникает цикл в
>шелловском скрипте с форком внутри и аномальное свечение пользователя оператор. Отталкиваясь
>от этого и знания что стартовые скрипты не форкуют за демона,
>могу предложить вам не еать мозг окружающим и вспомнить где-что писали,
>либо вывалить сюда всю инсталляционную байду, включая: содержимое rc.conf, строки файла
>/etc/master.passwd для pgsql и operator, потереть все файлы в домашнем каталоге
>юзера pgsql, начинающиеся с '.' (.profile, etc), ..., после запуска стартового
>скрипта сделать pstree (из портов) и/или ps -auxw.Угу. Только ларчик открывается проще. Кудааа проще. В моей ситуации - обновить порты до свежайших. Тогда он ставит pgsql на одну версию старше, который прекрасно работает :))))