Позвольте мне сначала объяснить сценарий. Я знаю, что такая установка может показаться смешной, но как только я объясню, что я вижу, если кто-то, кто знает больше, сможет объяснить, почему это происходит, я был бы очень признателен.
У меня 2 сайта. Оба они находятся на противоположных концах континентальной части США. Эти серверы подключены через двухточечный канал 10 Гбит / с, задержка которого составляет примерно ~ 67 мс. У меня есть общий ресурс NFS на одном конце и сервер, который должен смонтировать этот общий ресурс NFS на другом. При начальном монтировании дерево времени выполнения дает следующий вывод:
[root@server01 ~]# time tree /usr/local/ftppub/production/biz_12345
/usr/local/ftppub/production/biz_12345
└── incoming
├── inbound
....
├── test
│ └── OVR_DS_MASTER.csv
├── test1.csv
├── test2.csv
└── to_be_deleted
└── payments.csv
23 directories, 2229 files
real 0m9.636s
user 0m0.013s
sys 0m0.047s
[root@server01 ~]#
Обратите внимание на настоящий время, это около 10 секунд.
Но когда я запускаю тот же запрос во второй и в любой последующий раз, время в 12 раз превышает сумму:
[root@server01 ~]# time tree /usr/local/ftppub/production/biz_12345
/usr/local/ftppub/production/biz_12345
└── incoming
├── inbound
....
├── test
│ └── OVR_DS_MASTER.csv
├── test1.csv
├── test2.csv
└── to_be_deleted
└── payments.csv
23 directories, 2229 files
real 1m55.544s
user 0m0.026s
sys 0m0.137s
[root@server01 ~]#
cat / pro / mounts дает следующие настройки для этого крепления:
1.2.3.4:/FTP /usr/local/ftppub nfs rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=1.2.3.4,mountvers=3,mountport=2049,mountproto=udp,local_lock=none,addr=1.2.3.4 0 0
Это установки по умолчанию, создаваемые сервером при монтировании этого общего ресурса NFS. Я пробовал поиграть с этими параметрами, но вместо того, чтобы улучшить ситуацию, страдает доступ к этому общему ресурсу NFS. Что не вычисляет, так это то, почему первое чтение этой структуры папок в 12 раз быстрее, чем все последующие чтения? Я бы подумал, что проблема в дерево, но тестирование то же самое с ду дает тот же результат. Чтение из первой команды du занимает около 10 секунд, все последующие ду команды в тот же каталог дают результат почти 2 минуты. Это происходит с любым новым каталогом, который я пытаюсь прочитать в первый раз после монтирования NFS, любые последующие чтения из этого же каталога замедляются примерно в 12 раз.