Хорошо, я знаю, что мой вопрос не совсем конкретен, так как оптимальный размер фрагмента fread больше основан на пробной ошибке. Тем не менее, я надеялся, что некоторые из вас, ребята, смогут пролить свет на это.
Это также включает в себя вещи, связанные с сервером, поэтому я не уверен, что Stackoverflow — это правильное место, но это кажется лучшим выбором по сравнению с ServerFault.
Для начала выложу два скриншота:
http://screensnapr.com/e/pnF1ik.png
http://screensnapr.com/e/z85FWG.png
Теперь у меня есть скрипт, использующий PHP для потоковой передачи файлов конечному пользователю. Он использует fopen и fread для потоковой передачи файла. Размер большинства этих файлов превышает 100 МБ. Меня беспокоит то, что иногда вышеприведенная статистика превращается в мою серверную статистику. Два экрана с разных серверов; оба сервера являются выделенными ящиками для потоковой передачи файлов. На них больше ничего не работает, кроме потоковой передачи файла PHP конечному пользователю.
Меня смущает тот факт, что даже когда мой сервер передает конечным клиентам всего около 4 МБ/с данных, скорость чтения с диска составляет 100 МБ/с и выше. Этот безумный уровень ввода-вывода в конечном итоге блокирует мой процессор, потому что он ждет ввода-вывода, и задачи накапливаются; в конце концов мой сервер полностью перестает отвечать на запросы, требуя перезагрузки.
Мой текущий размер фрагмента fread установлен на 8 * 1024. Мой вопрос: поможет ли вообще изменение размера блока и экспериментирование? Клиент загружает данные только со средней скоростью ~ 4 МБ / с. Так почему же диск читает данные со скоростью 100 МБ/с? Я пробовал все возможные решения на стороне сервера; Я даже заменил диски на новые, чтобы исключить возможную проблему с дисками. Мне кажется, что это проблема сценария; может быть, PHP считывает все данные с диска независимо от того, сколько он передает конечному клиенту?
Любая помощь вообще будет оценена по достоинству. И если это принадлежит ServerFault, то мои извинения за публикацию здесь. И если вам, ребята, нужно, чтобы я опубликовал фрагменты из настоящего сценария, я тоже могу это сделать.
free
в командной строке. Посмотрите, не попал ли файл подкачки - person Marc B   schedule 19.05.2011