cifs монтируют ошибку ввода/вывода возвратов на частом чтении файла

Я использую человечность на виртуальной машине VMware для тестирования моих php проектов. Я там установил nginx, php7.0-fpm, mysql.

Мои доли расположены на окнах 10 и смонтированы к виртуальной машине с помощью cifs и fstab:

//192.168.100.1/projects  /mnt/projects cifs   credentials=/home/magic/.smbcredentials,cache=none,file_mode=0777,dir_mode=0777,noperm,rsize=16384,wsize=16384,noacl,sec=ntlm,nobrl  0 0

Это работает отлично большую часть времени. Но на большом проекте, где многие регистрируют, должен быть считан из компиляции, я получаю ошибку ввода/вывода во время жизни сценария PHP:

Warning: include(/mnt/projects/magento2/magento2/vendor/magento/framework/Component/ComponentRegistrarInterface.php): failed to open stream: Input/output error in /mnt/projects/magento2/magento2/vendor/composer/ClassLoader.php on line 444

Ошибка при соединении со случайным файлом каждый раз. Обычно проблема происходит, когда существует несколько запросов, прибывающих в php-fpm., например,

  1. первый запрос компилирует источники и читает файлы
  2. второй запустился параллельно, который означает, что php запускают второй процесс, где может быть считан те же файлы
  3. процесс компиляции является сбоями в обоих выше prcocesses, наугад подготавливают

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

Это ведет себя как ошибка, прибывающая из сетевого уровня. Что-то уничтожающее процесс считывания файла, когда новый запрос чтения файла обнаруживается.

Я рыл в конфигурацию самбы, конфигурацию CIFS. Обновленный до последней версии cifs-utils и самбы. Но не сделал получил любой успех все еще.

Все, что я смог сделать, просто ограничить php fpm процессы к 1. Который не является хорошим решением, потому что даже с одним ребенком - ошибка происходит некоторое время.

Существует ли способ узнать что, вызывая это или решить это?

1
задан 16 September 2017 в 12:20

1 ответ

Я решил подобную проблему путем определения версии протокола 2.0

mount -t cifs -o username=user,password=passwd,vers=2.0 /host/shared /mnt/project

Существует несколько различных версий SMB, используемого операционными системами Windows:

  • CIFS – Древняя версия SMB, который был частью Microsoft Windows NT 4.0 в 1996. SMB1 заменяет эту версию.
  • SMB 1.0 (или SMB1) – версия, используемая в Windows 2000, Windows XP, Windows Server 2003 и
  • SMB 2.0 – версия, используемая в Windows Vista (SP1 или позже) и Windows Server 2008
  • SMB 2.1 (или SMB2.1) – версия, используемая в Windows 7 и Windows Server 2008 R2
  • SMB 3.0 (или SMB3) – версия, используемая в Windows 8 и Windows Server 2012
0
ответ дан 8 December 2019 в 04:00

Другие вопросы по тегам:

Похожие вопросы: