Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

5. NFS через медленные линии

Медленные линии включают в себя модемы, ISDN и другие соединения на дальние расстояния.

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

Первая вещь которую вы должны помнить, что NFS -- медленный протокол. Использование NFS в большинстве своем подобно использованию протокола kermit для переноса файлов. Это -- медлено. Почти все быстрее чем NFS. FTP быстрее. HTTP быстрее. rcp быстрее. ssh быстрее.

Вы все еще хотите попробовать его в работе? Ok.

Параметры по умолчанию для NFS установлены для довольно быстрых линий с малым временем запаздывания. Если вы будете использовать эти настройки для линий с высоким временем запаздывания, то это приведет к выдаче сообщений об ошибках, прерыванию операций, система может притворяться, что файлы короче, чем они есть на самом деле и странно работать в других случаях.

Первое, что вам необходимо сделать -- это не использовать опцию монтирования soft. Это вызовет возвращение программному обеспечению сигналов об ошибках при таймаутах. В основном обычное программное обеспечение не слишком хорошо обрабатывает такие ошибки. Это хороший способ получить странные сбои. Вместо этого используйте опцию монтирования hard. Когда активна опция hard, то таймауты вызывают бесконечные попытки возобновления вместо прерывания работы ваших программ. Это то, что вам действительно нужно.

Следующая вещь, которую нужно сделать -- это поэксперементировать с опциями монтирования timeo и retrans. Они описаны в справочной странице nfs(5), здесь приводится выдержка из нее:


       timeo=n        Величина в десятых долях секунды до посылки
                      первой ретрансляции после таймаута RPC. По
                      умолчанию эта величина равна 7 десятых
                      секунды. После первого таймаута, время таймаута
                      удваивается после каждого таймаута, пока не
                      будет достигнута величина максимального таймаута 
                      равна 60 секундам, или произойдет достаточно
                      ретрансляции, вызвав главный таймаут. Затем если 
                      файловая система смонтирована с опцией hard, то
                      каждый новый таймаут каскадно запускается с
                      начальным значением в два раза больше, чем при
                      предыдущем каскаде, кроме того удваиваясь на
                      каждой ретрансляции. Максимальный таймаут всегда 
                      равен 60 секундам. Наилучшая общая
                      производительность может быть достигнута
                      увеличением таймаута при монтировании на
                      загруженной сети, к медленному серверу, или
                      сквозь несколько маршрутизаторов.

       retrans=n      Эта величина задает количество неосновных
                      таймаутов и ретрансляций, которые должны
                      произойти до возникновения главного таймаута. По 
                      умолчанию эта величина равна 3. Когда возникает
                      главный таймаут, то файловые операции либо
                      прерываются или на консоли печатается сообщение 
                      "server  not responding".

Другими словами: Если запрос не будет передан за таймаут равный 0.7 секунды (700ms), то клиент NFS повторит запрос и увеличит таймаут в два раза, до 1.4 секунды. Если ответ не придет в течении 1.4 секунды, то запрос повторится снова и таймаут будет увеличен до 2.8 секунды.

Скорость линии может быть измерена с помощью команды ping с размером пакета равным значению, установленому опциями rsize/wsize.


$ ping -s 8192 lugulbanda
PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms

--- lugulbanda.uio.no ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 14.9/15.1/15.9 ms

Здесь время показывает как долго пакет программы ping идет туда и обратно к машине lugulbanda. 15ms это довольно быстро. При работе через модем со скоростью 28.000 бод вы можете ожидать где-то 4000-5000ms, и если линия нагружена еще кем-то, то время будет даже выше, может быть раза в два. Когда это время высоко, мы говорим что это 'высокое запаздывание'. В общем для больших пакетов и для более загруженных линий запаздывание будет увеличиваться. Увеличьте timeo соответственно вашей линии и загрузке. И поскольку запаздывание увеличивается когда вы используете линию для других вещей: даже если вы хотите использовать FTP и NFS в одно и тоже время, то вы должны попытаться измерить время ping во время использования FTP для передачи файлов.


[ Назад | Оглавление | Далее ]










helloworld.ru © 2001-2021
Все права защищены