Производительность функции readfile () в PHP5

У меня были некоторые проблемы с задержками в том, как быстро начинается загрузка в браузере (не скорость загрузки, а время, которое прошло между нажатием на ссылку загрузки и загрузкой, появляющейся в браузере).

Я максимально упростил свой код;

$filepath = $this->_resourceFile;
ob_start();
$start = microtime(true);
readfile($filepath);
$end = microtime(true) - $start;
Mage::log('Time taken to serve file was '.$end);

(Вы увидите, что это часть Magento, я сильно отредактировал способ, которым Magento обслуживал загружаемые файлы продуктов, чтобы попытаться ускорить процесс. Это работало в большинстве случаев, но у меня все еще возникают проблемы)

Регистрация, которую я разместил, показала ниже;

2014-10-23T14:19:15+00:00 DEBUG (7): Time taken to serve file was 0.067724943161011
2014-10-23T14:24:48+00:00 DEBUG (7): Time taken to serve file was 0.069678068161011
2014-10-23T14:25:58+00:00 DEBUG (7): Time taken to serve file was 0.080054998397827
2014-10-23T14:26:28+00:00 DEBUG (7): Time taken to serve file was 0.067059993743896
2014-10-23T14:27:27+00:00 DEBUG (7): Time taken to serve file was 0.068262100219727
2014-10-23T14:30:08+00:00 DEBUG (7): Time taken to serve file was 0.066760063171387
2014-10-23T14:36:34+00:00 DEBUG (7): Time taken to serve file was 90.616213083267
2014-10-23T14:45:11+00:00 DEBUG (7): Time taken to serve file was 0.065201997756958
2014-10-23T14:45:22+00:00 DEBUG (7): Time taken to serve file was 0.073112010955811
2014-10-23T14:46:56+00:00 DEBUG (7): Time taken to serve file was 87.481207132339
2014-10-23T14:47:44+00:00 DEBUG (7): Time taken to serve file was 36.195640087128
2014-10-23T14:47:48+00:00 DEBUG (7): Time taken to serve file was 0.067437887191772
2014-10-23T14:48:01+00:00 DEBUG (7): Time taken to serve file was 0.068021059036255
2014-10-23T14:48:06+00:00 DEBUG (7): Time taken to serve file was 0.028129100799561
2014-10-23T14:48:13+00:00 DEBUG (7): Time taken to serve file was 0.067390918731689
2014-10-23T14:49:00+00:00 DEBUG (7): Time taken to serve file was 0.065808057785034
2014-10-23T14:49:06+00:00 DEBUG (7): Time taken to serve file was 0.06847882270813
2014-10-23T14:49:48+00:00 DEBUG (7): Time taken to serve file was 0.063234090805054
2014-10-23T14:50:03+00:00 DEBUG (7): Time taken to serve file was 0.059723138809204
2014-10-23T14:50:08+00:00 DEBUG (7): Time taken to serve file was 0.068203926086426
2014-10-23T14:50:13+00:00 DEBUG (7): Time taken to serve file was 0.065500974655151
2014-10-23T14:50:16+00:00 DEBUG (7): Time taken to serve file was 0.064054012298584
2014-10-23T14:50:20+00:00 DEBUG (7): Time taken to serve file was 0.068597078323364
2014-10-23T14:50:24+00:00 DEBUG (7): Time taken to serve file was 0.026658058166504
2014-10-23T14:51:47+00:00 DEBUG (7): Time taken to serve file was 0.065510988235474
2014-10-23T14:51:56+00:00 DEBUG (7): Time taken to serve file was 0.06929087638855
2014-10-23T14:52:00+00:00 DEBUG (7): Time taken to serve file was 0.026684999465942
2014-10-23T14:52:32+00:00 DEBUG (7): Time taken to serve file was 0.067147016525269
2014-10-23T14:55:55+00:00 DEBUG (7): Time taken to serve file was 0.067998886108398

Вы увидите, что среди 0,06 … есть ожидание 90 секунд, ожидание 87 секунд и ожидание 36 секунд. Что может быть причиной этих шипов?

Сайт работает на сервере Linux, с Apache а также nginx, с PHP5.3.3. Может ли это быть проблема загрузки сервера? Правильно ли я считаю, что пропускная способность пользователей не должна иметь ничего общего с этой задержкой?

2

Решение

Итак, после долгих исследований выяснилось, что это была проблема с сервером.

Сервер сохраняет файл в оперативной памяти при первом обращении к нему, чтобы ускорить доступ в будущем. Это было время, затраченное на копирование файла в ОЗУ, которое вызывало задержку — как только файл был в ОЗУ, он был немедленно обслужен.

Мы изменили настройки ресурсов ввода-вывода на сервере, и первоначальное время загрузки теперь сократилось до 6 секунд, а не до 90.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]