Это неплохо, а как во встроенном перле завести счетчик, который будет действовать на протяжении всей жизни воркера, а не только обработки запроса?<br><br><div class="gmail_quote">8 января 2009 г. 13:14 пользователь Maxim Dounin <span dir="ltr">&lt;<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>&gt;</span> написал:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello!<br>
<div class="Ih2E3d"><br>
On Thu, Jan 08, 2009 at 03:31:14AM +0300, Борис Долгов wrote:<br>
<br>
&gt; Понятно, спасибо. В принципе, вариант не плохой - но вопрос в том, как<br>
&gt; балансировать не случайно, а равномерно между дисками с минимальными<br>
&gt; трудозатратами (насколько я понимаю, 255 if&#39;ов - это неоптимально с точки<br>
&gt; зрения конфигурации, да и стыдно будет, если кто увидит :), даже если<br>
&gt; уместить все это в 7 if&#39;ов, все равно будет, наверно, криво).<br>
<br>
</div>Ну я ж говорю - не показывать. :)<br>
<div class="Ih2E3d"><br>
&gt; Свой модуль писать страшно, как на perle организовать последовательный<br>
&gt; балансинг а не псевдорандом - не знаю. Разве что по остатку деления номера<br>
&gt; секунды на 7... Так все равно псевдорандом, нагрузка на диски будет<br>
&gt; приходиться пиками.<br>
<br>
</div>А кто мешает завести счётчик запросов внутри перла и делать<br>
round-robin по этому счётчику? &nbsp;Разделять между воркерами его не<br>
надо, обнуление при реконфигурации - тоже не велика беда.<br>
<font color="#888888"><br>
Maxim Dounin<br>
</font><div><div></div><div class="Wj3C7c"><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 8 января 2009 г. 3:00 пользователь Maxim Dounin &lt;<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>&gt;написал:<br>
&gt;<br>
&gt; &gt; Hello!<br>
&gt; &gt;<br>
&gt; &gt; On Thu, Jan 08, 2009 at 01:18:52AM +0300, Борис Долгов wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Добрый день!<br>
&gt; &gt; &gt; Хотелось бы как-нибудь хитро заставить nginx балансировать нагрузку между<br>
&gt; &gt; &gt; несколькими жесткими дисками (между несколькими document_root)<br>
&gt; &gt; &gt; Вижу несколько решений:<br>
&gt; &gt; &gt; 1. Поднять еще 7 nginx&#39;ов на разных портах, сделать балансинг по tcp.<br>
&gt; &gt; &gt; Наверно, плохо.<br>
&gt; &gt; &gt; 2. Поднять еще 7 server&#39;ов в одном nginx&#39;e, сделать баланскинг по tcp.<br>
&gt; &gt; &gt; Наверно, плохо.<br>
&gt; &gt; &gt; 3. Написать что-то легкое на fastcgi, которое будет отдавать<br>
&gt; &gt; &gt; X-Accel-Redirect. Наверно, плохо?<br>
&gt; &gt; &gt; 4. Написать что-то на встроенном perl&#39;e. Хорошо ли? Как сделать<br>
&gt; &gt; равномерную<br>
&gt; &gt; &gt; балансировку при его использовании, не прибегая к внешним средствам.<br>
&gt; &gt; &gt; 5. Написать модуль, который будет сам менять document_root. Наверно, &nbsp;не<br>
&gt; &gt; &gt; осилю.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Есть ли какие-то другие способы? Что из вышеперечисленного посоветуете?<br>
&gt; &gt; &gt; Файлы небольшие, не больше 7 мегабайт.<br>
&gt; &gt;<br>
&gt; &gt; Я бы попробовал что-нибудь вроде<br>
&gt; &gt;<br>
&gt; &gt; &nbsp; &nbsp;root &nbsp;/path/to/$disk;<br>
&gt; &gt;<br>
&gt; &gt; и заставил переменную $disk принимать [[псевдо]случайные] значения<br>
&gt; &gt; от 0 до 6 соответственно. &nbsp;С особым цинизмом это можно сделать<br>
&gt; &gt; rewrite&#39;ом, как нибудь так:<br>
&gt; &gt;<br>
&gt; &gt; &nbsp; set $disk 0;<br>
&gt; &gt; &nbsp; if ($remote_addr ~ /\.1$/) { set $disk 0; }<br>
&gt; &gt; &nbsp; if ($remote_addr ~ /\.2$/) { set $disk 1; }<br>
&gt; &gt; &nbsp; ...<br>
&gt; &gt; &nbsp; if ($remote_addr ~ /\.255$/) { set $disk N; }<br>
&gt; &gt;<br>
&gt; &gt; (главное - Игорю не показывать :)). &nbsp;Ну соответственно варианты<br>
&gt; &gt; оптимизации - выставлять переменную встроенным перлом, сделать<br>
&gt; &gt; модуль выставляющий переменную.<br>
&gt; &gt;<br>
&gt; &gt; Maxim Dounin<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; С уважением, Борис Долгов.<br>
&gt; icq 77556665<br>
&gt; e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>