Отдача картинки скриптом vs. напрямую.

Фанат

oncle terrible
Команда форума
Отдача картинки скриптом vs. напрямую.

Я тут решил посмотреть, насколько медленнее будет отдавать картинку из кэша скриптом, а не напрямую
Результат меня несколько обескуражил
Код:
ab -n 100 -c 5 "http://127.0.0.1/image.php?width=200&height=200&image=/IMG_1544.jpg"
Concurrency Level:      5
Time taken for tests:   0.125000 seconds
Complete requests:      100

ab -n 100 -c 5 "http://127.0.0.1/image.php.jpg"
Concurrency Level:      5
Time taken for tests:   0.31250 seconds
Complete requests:      100
я понимаю, что кондишенс кривые - венда, нету прокси веб-сервера, нагрузки и прочее.
но все равно интересно объяснение этому феномену
 

dimagolov

Новичок
*****, а повторяемость теста какая? может было внешнее влияние во время теста?

и смущает http://127.0.0.1/image.php.jpg, картинка так и называлась, image.php.jpg?
 

Фанат

oncle terrible
Команда форума
разпопять запускал. цифры одинаковые, не меняются.
 

vovanium

Новичок
Результаты одинаковые по этим ссылкам? Попробуй количество запросов до 1000 увеличить.
У меня прогнозируемо скрипт медленнее, процентов на 30%.
Там никакой реврайт не включается из-за такого "image.php.jpg" имени?
 

Фанат

oncle terrible
Команда форума
Опана!
Совсем другая картина.
На тыще у картинки время осталось прежним, а у скрипта увеличилось линейно в те самые 10 раз!
На 10 тыщах тысячный результат у обоих увеличивается ровно в 10 раз.

-~{}~ 05.03.10 00:12:

нет, все чисто и одинаково
 

Фанат

oncle terrible
Команда форума
в смысле результаты одинаковые и рерайта нет
а результаты изменились

-~{}~ 05.03.10 00:18:

100: 0,12 - 0,3
1000: 1,2 - 0,3
10000: 12 - 3,4
 

vovanium

Новичок
хм, ты там не ошибся часом, как может при в 10 раз большем количестве запросов общее время не измениться, это же не реально, это же не среднее время.

и попробуй ради интереса файл назвать image.jpg
 

fixxxer

К.О.
Партнер клуба
>>ab -n 100 -c 5 "http://127.0.0.1/image.php.jpg"
а не выходит ли так, что джипег уходит на обработку в пхп?
 

Фанат

oncle terrible
Команда форума
да я просто тупо сохранил браузером картинку - отсюда и имя такое.
нет, не ошибся.

-~{}~ 05.03.10 08:27:

вотблин пхпклуб :)
все рады помочь советом, но никто не попробует сам :)
на всяк.случай - я тестировал вот этот скриптик http://shiftingpixel.com/2008/03/03/smart-image-resizer/
в надежде сказать об него гадостей

интересно, что и менальто гэллери тоже, к моему удивлению, хранит картинки за вебрутом. и отдает скриптом. хотя это, в принципе можно понять обеспечением приватности. но все равно. то есть - не боятся. понятно, что скрипт обычно отдает not mod modified вместо картинки, но у них-то там не только првевьюшки, а и оригиналы (у меня-то картинка 7 хилобайт, а с ростом, я думаю, картинка сильно изменится)

вообще, я не могу понять результаты тестов.
чисто визуально сотня обращений проскакивает по экрану быстрее, чем 1000. но цифры аб упорно показывает одни и те же: 0,3 секунды.
или 0,4 без параллельности

-~{}~ 05.03.10 08:46:

ага, подо фрёй картина совсем другая.
все ровно и предсказуемо
скрипт
100 - 0,3
1000 - 3

кортинко
100 - 0,1
1000 - 1
 

vovanium

Новичок
по ходу у тебя что-то не так с мерялкой на винде, другие объяснения дать сложно
у меня на простом скрипте типа
PHP:
<?php
readfile('image.jpg');
?>
зависимость на винде вполне предсказуемая
на 100 - 0,09 0,12
на 1000 - 0,9 1,2
картинка напрямую всегда быстрее
 

Gas

может по одной?
На unix серваке: ab -c 100 -n 10000

Apache:
Time taken for tests: 7.126 seconds
Requests per second: 1403.31 [#/sec] (mean)

PHP (просто readfile):
Time taken for tests: 12.871 seconds
Requests per second: 776.94 [#/sec] (mean)

-~{}~ 05.03.10 17:11:

в надежде сказать об него гадостей
ну в любом случае правильно, нечего всегда php дёргать, если thumb'а не существует, только тогда рерайтить на скрипт
 

Фанат

oncle terrible
Команда форума
скрипт по ссылке делает странное - чтобы получить ETAG, делает мд5 от содержимого картинки. поэтому сильно тормозит относительно простого реадфайла
 

fixxxer

К.О.
Партнер клуба
nginx static VS nginx+php-fpm readfile, 15 children:

ab -n 2000 -c 20
Код:
Document Path:          /logo.jpg
Document Length:        19893 bytes

Concurrency Level:      20
Time taken for tests:   0.457 seconds
Complete requests:      2000
Failed requests:        0
Write errors:           0
Total transferred:      40222192 bytes
HTML transferred:       39793978 bytes
Requests per second:    4375.13 [#/sec] (mean)
Time per request:       4.571 [ms] (mean)
Time per request:       0.229 [ms] (mean, across all concurrent requests)
Transfer rate:          85926.48 [Kbytes/sec] received
Код:
Document Path:          /logo.php
Document Length:        19893 bytes

Concurrency Level:      20
Time taken for tests:   1.557 seconds
Complete requests:      2000
Failed requests:        0
Write errors:           0
Total transferred:      40208264 bytes
HTML transferred:       39905358 bytes
Requests per second:    1284.62 [#/sec] (mean)
Time per request:       15.569 [ms] (mean)
Time per request:       0.778 [ms] (mean, across all concurrent requests)
Transfer rate:          25220.80 [Kbytes/sec] received
 
Сверху