Мой опыт состоит в том что моя задача высокого количества процесса, с которой только следуют:
kern.maxproc=2500 # This is as big as I could set it.
kern.maxprocperuid=2048
ulimit -u 2048
Первые два могут войти /etc/sysctl.conf
и ulimit оценивают в launchd.conf для надежной установки.
Так как tcp/ip был частью того, что я делал, я также должен был натолкнуться
kern.ipc.somaxconn=8192
от его значения по умолчанию 128.
Прежде чем я увеличил пределы процесса, я получал отказы "ветвления", недостаточно ресурсов. Прежде чем я увеличил kern.ipc.somaxconn, я получал "поврежденный канал" ошибки.
Это было при выполнении достаточного количества (500-4000) из отдельных процессов на моем монстре Mac, ОС 10.5.7, затем 10.5.8, теперь 10.6.1. В соответствии с Linux на компьютере моих боссов это просто работало.
Я думал, что количество процессов будет ближе к 1 000, но кажется, что каждый процесс, который я запустил, включал свою собственную копию оболочки в дополнение к фактическому объекту, делающему фактическую работу. Очень праздничный.
Я записал игрушку дисплея, которая пошла что-то как:
#!/bin/sh
while[ 1 ]
do
n=netstat -an | wc -l
nw=netstat -an | grep WAIT | wc -l
p=ps -ef | wc -l
psh=ps -ef | fgrep sh | wc -l
echo "netstat: $n wait: $nw ps: $p sh: $psh"
sleep 0.5
done
и наблюдаемый максимальное количество процессов в PS-ef и бродящий вокруг в netstat, ожидающем TIME_WAIT
истечь... С повышенными пределами я видел 3500 + TIME_WAIT
объекты на пике.
Прежде чем я повысил пределы, я мог 'красться' на пороговом значении отказа, которое началось ниже 1K, но повысилось до высокого значения 1190.. каждый раз это было продвинуто в отказ, который это могло взять немного в более следующий раз, вероятно, из-за чего-то кэшировался, который расширился до его предела каждый раз, когда это перестало работать.
Хотя мой тестовый сценарий имел "ожидание" как свой заключительный оператор, там было все еще МНОГО отдельных процессов, бродящих вокруг после того, как он вышел.
Я получил большую часть информации, которую я использовал от регистраций в Интернете, но не все это было точно. Ваш milage может варьироваться.
Правило
RewriteRule ^/imgcpu\?src=(.+)&w=(.+)&h=(.+)&c=(.+)&q=(.+)$ /IMG-$1_w-$2_h-$3_c-$4_q-$5
Будет иметь дело с первым случаем, проблема состоит в том, что Вам было бы нужно намного более сложное РЕ для контакта с различиями на второй и третьей строке (пропавшие без вести q
и p
части URL, дополнительного s
переменная, и т.д.).
Для предотвращения путаницы долгого и регулярного выражения только для записи, я сделал бы одно другое правило для каждого из этих трех случаев.
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_c-(.+)$ imgcpu\?src=$1&w=$2&h=$3&c=$4 [L]
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)_f-(.+)$ imgcpu\?src=$1&w=$2&h=$3&f=$4 [L]
RewriteRule ^IMG-(.+)_w-(.+)_h-(.+)$ imgcpu\?src=$1&w=$2&h=$3 [L]
RewriteRule ^IMG-(.+)_w-(.+)$ imgcpu\?src=$1&w=$2 [L]
RewriteRule ^IMG-(.+)_h-(.+)$ imgcpu\?src=$1&h=$3 [L]
# pfff endless possibilities!!
И это даже не покрывает случаи, где сначала высоте дают ширину. Нет это не должно работать!
Позволяет находят решение перенаправить весь ДОПОЛНИТЕЛЬНЫЙ &w = или &h = с чем-то как и [a-z] = (.*), sothat _h-или _w-универсальны, и не имеет значения, что буква там _c-или _q-, которому что-либо могло затем соответствовать. ЭТО было бы очень желанным, переписывают.
Между тем это делает работы!!
<img src"/IMG-folder/photo_w100_h100_cf_q60.jpg"/>
при помощи:
RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_q(.+).jpg$
imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&q=$5 [L]
Таким образом, присвоение Теперь:
Перепишите любые из запросов, которые следуют [photo123.jpg]&[a-z]=(.*)&[a-z]=(.*)etcettera
в photo123_X-x_Y-y(optionally more queries).jpg