Продолжаем хаить форум

Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Продолжаем хаить форум

Сообщение MX_Master »

Николай, я, обычно, с SVP почти никогда не солидарен. Но в данном случае он прав насчёт раздельной статики и динамики. Апач - это самый наимедлейший обработчик статики. А если он занят и тем, и другим на крупном ресурсе, можно тушить свет.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

да тут то и прикол в том, что для отдачи этой "статики" на которой все висит - нужен апач - он лазит по БД, смотрит сессии и прочие штукам.
добавил еще до кучи таймаут на отдачу файла.
Если забирать медленнее 10к в секунду - то отвалится... точнее отвалится, если будет отдавать дольше, чем отдавал бы по 10к

Код: Выделить всё

$timeout = time()+ceil($size/10000) ;
				while ( ($buffer = fread($fp, 8192)) !== false )
				{
					echo $buffer;
					if (time()>$timeout)break; 
				}
				fclose($fp);		
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Продолжаем хаить форум

Сообщение MX_Master »

По идее, публичные вложения должны лежать в отдельном месте и проверок на право их чтения ваще не должно быть. Такие вложения (и прочие публичные файлы) надо отдать на обработку отдельному веб-серверу. Яндекс и юзеры будут довольны.

Все остальные вложения должны лежать в приватном месте. Если их хочет скачать не юзер, он получает 403 и идёт лесом. На этом этапе все Яндексы и гости будут отсеяны. А вот теперь уже можно пробить юзера по сессии, и если права у него есть - отдать файл через PHP скрипт.

Как-то так
Аватара пользователя
Perlovka
Новичок
Сообщения: 8
Зарегистрирован: 08 апр 2019, 01:24
Репутация: 0
Настоящее имя: Михаил
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Perlovka »

Nick писал(а):ну все таки, хочется быть в яндексе ;)
Так никто и не говорит вообще его забанить. Просто закрыть доступ к /forum/download/file.php некоторым юзер агентам. А остальное пусть индексирует =)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Serg »

Nick писал(а):ЗЫ нашел хинт, что может feof глючить
Сомнительно. Там просто нечему глючить - он просто возвращает "статус" канала, а "взводится" он именно всякими fread, fgets.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Perlovka
Новичок
Сообщения: 8
Зарегистрирован: 08 апр 2019, 01:24
Репутация: 0
Настоящее имя: Михаил
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Perlovka »

Nick писал(а):да тут то и прикол в том, что для отдачи этой "статики" на которой все висит - нужен апач - он лазит по БД
По ДБ лазит PHP, апач вовсе необязателен. Nginx + php-fpm справляются с этой задачей в разы лучше, гибче и быстрее )

Например, мое предложение в конфиге nginx выглядит примерно так:

Код: Выделить всё

location /forum/downloads/file.php {
    if ( $http_user_agent ~ (Yandex|YaDirect) ) {
        access_log  /var/log/nginx/access_yabot_log www;
        return 201;
    }
}
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

Вот так вот все и происходит...
https://www.youtube.com/watch?v=VxeEAcpDumI
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Serg »

В основном одни "W" висят. Снова предлагаю посмотреть загрузку сетевого интерфейса - нет-ли там "полки". Иногда вместо тормозов получаю "сервер не отвечает"...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

там есть скорость соединения - там
10 requests/sec - 183.1 kB/second - 18.3 kB/request
Что собственно ниочем...
Аватара пользователя
Perlovka
Новичок
Сообщения: 8
Зарегистрирован: 08 апр 2019, 01:24
Репутация: 0
Настоящее имя: Михаил
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Perlovka »

Nick писал(а):добавил еще до кучи таймаут на отдачу файла
Я конечно, извиняюсь, но у вас очень странный метод по решению проблем =) Форум двое суток уже еле дышит, а вы еще и увеличиваете на него нагрузку ) Вполне вероятно, что при отваливании по таймауту прилетит новое соединение с тем же запросом. И будет эта карусель длиться вечно )
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

Perlovka писал(а):Вполне вероятно, что при отваливании по таймауту прилетит новое соединение с тем же запросом. И будет эта карусель длиться вечно )
хрен его знает.... учитывая то, что процесс и так подвисал но только до 300 секунд...
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение SVP »

Nick писал(а):да тут то и прикол в том, что для отдачи этой "статики" на которой все висит - нужен апач - он лазит по БД, смотрит сессии и прочие штукам.
добавил еще до кучи таймаут на отдачу файла.
Мрак какой...
Для ОТДАЧИ апач не нужен, апач нужен для того, чтобы сформировать ответ, а ОТДАВАТЬ можно и нужно нгиксом. (это если хочется апачем формировать)
Есть вполне сформировавшийся тулчейн, можно игнорить его существование и "бродить по граблям", можно один раз настроить и либо попросту "отпустит", либо уже в нём настроить банально для яндекса leaky buсket и просто выдавать ему 503 при запросах больше чем N в минуту, и скорее всего он подстроится довольно шустро.

Но вообще, боюсь, время переделать форум в части хранения изображений.
В том смысле, что пора декларировать что они общедоступны и выдавать их именно как статику... но скорее всего после описанного выше не понадобится.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Serg »

Nick писал(а):Что собственно ниочем...
Да, нужен график загрузки сетевого интерфейса - только так можно будет увидеть "полку", если она есть и по её уровню попробовать понять причину.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Perlovka
Новичок
Сообщения: 8
Зарегистрирован: 08 апр 2019, 01:24
Репутация: 0
Настоящее имя: Михаил
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Perlovka »

UAVpilot писал(а):Да, нужен график загрузки сетевого интерфейса - только так можно будет увидеть "полку", если она есть и по её уровню попробовать понять причину.
Зачем? Судя по видео, там 30 kbps на 100 запросов, 0.6 мбит. О какой загрузке идет речь?

Я бы смотрел на disk I/O.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Serg »

Perlovka писал(а):Зачем? Судя по видео, там 30 kbps на 100 запросов, 0.6 мбит. О какой загрузке идет речь?
Я ж в предыдущем посте чётко написал "загрузки сетевого интерфейса" и написал, что в основном экземляры апача висят на отдаче байтов. Спрашивается: а почему они так долго отдают? Может все эти отдаваемые байты в канал не пролазят?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

Там за все это время отдано несколько Мб. Все там полезет. Тем более, пока под совсем не забит сервер очень бодро отдает странички с картинками и всем остальным.

Почему то Яндекс только не до конца принимает картинку... Толи что-то ещё...

Кстати, ее может он каким то образом на размер в заголовке смотреть и переставать забирать файл после того, как выбрал нужный размер?
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: Продолжаем хаить форум

Сообщение SVP »

UAVpilot писал(а):Я ж в предыдущем посте чётко написал "загрузки сетевого интерфейса" и написал, что в основном экземляры апача висят на отдаче байтов. Спрашивается: а почему они так долго отдают? Может все эти отдаваемые байты в канал не пролазят?..
А может в память они не пролазят(после каждого куска читаются с диска и ждут освобождения памяти под размещение), а может в диск(часто читаются, потому как хранить негде, кеша нет т.к. 0 пустой памяти итп).

Но проблема нифига не в этом, а в том, сколько ресурсов занимает этот процесс...
Занимал бы он не сотни мегабайт, а тысячи байт и былоб пофиг сколько файлов запросил яндекс.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Продолжаем хаить форум

Сообщение Nick »

SVP писал(а):А может в память они не пролазят(после каждого куска читаются с диска и ждут освобождения памяти под размещение), а может в диск(часто читаются, потому как хранить негде, кеша нет т.к. 0 пустой памяти итп).
Имхо нет - по видео видно, как эти процессы подвисают по одной штуке. Файлы там зачастую маленькие. При этом до тех пор пока пул не забьется - форум летает и отдает и файлы и старнички очень быстро. Просто яндекс их не забирает...
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6610
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Продолжаем хаить форум

Сообщение NightV »

Nick писал(а):хрен там
насяльнике.... ты это.. того... сильно не ругайся)))
ПЫ.СЫ. у меня ниче не тормозит... разве что сам иногда :hehehe:
Всё просто! если знаешь КАК!
Аватара пользователя
al_us
Почётный участник
Почётный участник
Сообщения: 553
Зарегистрирован: 24 июн 2015, 09:27
Репутация: 115
Настоящее имя: Алексей
Контактная информация:

Re: Продолжаем хаить форум

Сообщение al_us »

я думаю это всё изза gif файлов которые не прячут под спойлер :D
Ответить

Вернуться в «Обсуждение сайта»