The Russian Electronic Developer Magazine | |
Русский электронный журнал разработчика | |
Dan Mosedale, William Foss, and Rob McCool - Netscape Communications.
Перевод - Дмитрий Максимович (MaximDim)
Оригинал статьи можно было найти на странице Dan Mosedale (http://people.netscape.com/dmose/)
Интернет-узел [2] содержит онлайновую документацию к Netscape
Navigator, маркетинговую информацию обо всех наших продуктах, множество
страниц общего назначения, включая многочисленные каталоги и так же, домашние
страницы сотрудников Netscape. На всех серверах используется Netscape Server,
но большинство стратегий, описанных в данной работе, с равным успехом могут
быть применены и к другим серверам HTTP и FTP.
В разное время мы пытались использовать различные конфигурации машин
и различные операционные системы; Таблица 1 даст вам представление
о них.
Sun uniprocessor (60 Mhz) SPARCserver 20 |
Solaris 2.3 ~2.4 |
SGI 2-processor Challenge-L |
IRIX 5.2 |
SGI Indy (150 Mhz) |
IRIX 5.2 ~5.3 |
SGI Challenge-S (175 Mhz) |
IRIX 5.3 |
HP 9000/816 |
HP-UX 9.04 |
90 Mhz Pentium PC |
Windows NT 3.5 |
90 Mhz Pentium PC |
BSD/OS 2.0 |
Каждый из наших WWW-серверов имеет одинаковое содержимое (подробнее
об этом далее). Еще до того, как Netscape Navigator был выпущен и стал
доступен для всего сообщества Интернет, мы в своих обсуждениях затрагивали
вопрос распределения нагрузки между несколькими серверами, когда это станет
необходимо. Так как уже были известны определенные проблемы с использованием
для этой цели серверов DNS (DNS round-robin techniques) [3], мы
решили реализовать схему случайного выбора адреса внутри самого Netscape
Navigator. Короче говоря, когда пользователь Navigator'а вводит адрес home.mcom.com
или home.netscape.com браузер обращается к DNS серверу с запросом
адреса узла в виде homeX.netscape.com, где X является случайным
числом в диапазоне от 1 до 16. В свою очередь, каждый из наших серверов
имеет определенное число псевдонимов (alias) homeX указывающих на
него. Но так как такая стратегия не применима в большинстве случаев для
других интернет-узлов, мы не будем уделять здесь ей больше времени.
Другая схема, которую мы рассматривали - распределение нагрузки с использованием
DNS (namessever-based load balancing). Эта схема основана на том, что сервер
имен периодически опрашивает каждый WWW-сервер для определения текущей
загрузки (в более простом варианте можно использовать статические веса).
Затем сервер имен отвечает на запрос об адресе хоста, возвращая IP-адрес
наименее загруженного WWW-сервера. Эта схема дополнительно позволяет избежать
посылки клиентом запроса к серверу не доступному в данный момент (в отличие
от схемы "DNS round-robin techniques" - Прим. переводчика).
Однако, необходимо учесть, что неработающий сервер может оставаться в пуле
серверов на период времени DNS TTL. Еще две схемы, которые мы планируем
рассмотреть в будущем - RFC 1794 [4] и lbnamed [5].
Таблицы 2 и 3 обобщают некоторую статистику производительности
для различных серверов на день 26 Июля 1995 года в соответствии с присвоенными
каждой машине относительными весами. В нашем случае мы давали каждой машине
весовой коэффициент в шестнадцатых долях от полной загрузки нашего узла.
Замечание: В дополнение к 1/16 доли WWW-нагрузки машина SGI 150 Mhz
R4400 Indy обслуживала адреса www.netscape.com и home.netscape.com
и эта машина обрабатывала все CGI-процессы для нашего узла. Общая нагрузка
CGI на этот день составила 49,887 запросов из общего количества в 1,548,869
HTTP-запросов (подробнее об этом далее).
|
|
|
|
|
|
|
|
SGI 150 Mhz R4400 Indy |
1/16 |
1,548,859 |
68,962 |
7,253 |
4,558 |
120,712 |
12,487,021 |
SGI 175 Mhz R4400 Challenge S |
6/16 |
2,306,930 |
47,154 |
23 |
2,722 |
249,791 |
11,574,007 |
SGI 175 Mhz R4400 Challenge S |
5/16 |
2,059,499 |
43,441 |
43 |
2,681 |
225,055 |
10,626,111 |
BSD/OS 90 Mhz Pentium |
4/16 |
1,571,804 |
31,919 |
23 |
2,351 |
192,726 |
7,936,917 |
|
|
|
|
|
|
|
SGI 150 Mhz R4400 Indy |
1/16 |
430,600/82 |
345,132/61 |
227,618/61 |
224,849/60 |
236,678/59 |
SGI 175 Mhz R4400 Challenge S |
6/16 |
613,621/119 |
646,112/119 |
656,412/110 |
545,699/108 |
520,256/107 |
SGI 175 Mhz R4400 Challenge S |
5/16 |
466,244/93 |
430,870/88 |
358,186/84 |
375,964/84 |
531,421/82 |
BSD/OS 90 Mhz Pentium |
4/16 |
375,696/81 |
256,143/77 |
417,655/76 |
394,878/72 |
298,561/70 |
В некоторых случаях, создание содержимого интернет-узла, похоже на работу
над средним или большим проектом в области разработки программного обеспечения.
Система контроля версий становиться необходима для управления содержимым
интернет-узла, когда существует множество независимых редакторов, имеющих
возможность добавлять и удалать материалы из дерева документов интернет-узла.
CVS предоставляет относительно простой способ возврата к предыдущим версиям
документов, детального ведения списков изменений сделанных в файлах при
модификации содержимого интернет-узла.
Одним из недостатков системы CVS, является то, что многие из людей занимающихся
дизайном и разработкой содержимого нашего интернет-узла, находят ее слишком
сложной в использовании и понимании в связи с недостатком опыта работы
с системой UNIX. По нашему мнению, кросс-платформенный инструмент с графическим
интерфейсом был бы очень кстати в этом случае.
Для нас было очевидно, что существует другое решение этой проблемы,
rdist [7] - программа специально спроектированная для синхронизации
дерева файлов. Однако, мы чувствовали, что не сможем использовать эту программу
без ее модификации, так как вся ее система безопасности основывается исключительно
на файлах .rhosts, а это слишком слабый уровень безопасности. Поэтому,
с помощью некоторых других разработчиков, мы работали над добавлением SSL
(Secure Socket Layer - Прим. переводчика) в rdist для обеспечения
как шифрования передаваемых данных, так для лучшей идентификации обоих
сторон. При использовании протокола SSL нам больше нет необходимости полагаться
на IP адрес клиента для определения его полномочий, вместо этого используются
шифрованные сертификаты.
В процессе работы над добавлением протокола SSL в rdist мы решили,
что будет разумно использовать последнюю версию rdist от USC, в
частности потому, что в этой версии имелась возможность использовать в
качестве транспорта rsh(1) вместо rcmd(1). А так как rsh
не использует rcmd в своей работе, то отпала необходимость изменять
эффективные права процесса на права суперюзера (setuid root), что являлось
еще одним существенным улучшением безопасности системы. Интересным побочным
эффектом этой работы явилось то, что мы получили SSL версию rsh(1),
которую мы стали использовать для копирования файлов регистрации (log files).
Программа проверки времени отклика спроектирована для работы с внешней,
по отношению к WWW-серверу машины. Периодически, она запускается и посылает
HTTP-запрос на WWW-сервер за некоторым документом. И измеряет промежуток
времени от начала этого процесса до его конца, то есть, от вызова функции
connect() до возврата нуля функцией read(), что означает
закрытие сеанса со стороны сервера. Если вы выберите для этой процедуры
относительно небольшой документ, то измеренное время будет хорошим индикатором
того, как долго пользователи ожидают ответа сервера (так как в идеале небольшой
документ должен быть получен практически моментально) (здесь, естественно,
пропускная способность каналов связи предполагается достаточной, чтобы
не являться дополнительным ограничивающим фактором -Прим. переводчика).
В нашем конкретном случае, мы запускаем этот монитор на удаленной машине,
имеющей надежное соединение с Интернет, и на машине находящейся в нашей
локальной сети. Это дает возможность увидеть, что является причиной потери
производительности - перегрузка сети или перегрузка сервера.
Программа-анализатор лог-файлов, которая теперь входит в состав стандартной
поставки серверов Netscape Communications and Commerce server, предоставляет,
например, информацию о наиболее загруженных часах и минутах дня, и о том
какой процент документов загружается из кеша. Этот анализатор очень полезен,
для определения часов наибольшей нагрузки, требующих повышенного внимания.
Так как наш интернет-узел обрабатывает очень большой траффик, мы спроектировали
анализатор лог-файлов, способный очень быстро обрабатывать большие объемы
информации.
Программа для посылки собщений на пейджер в случае сбоев в работе сервера
похожа на программу проверки времени отклика, рассмотренную выше. Разница
лишь в том, что когда она обнаруживает, что отлик сервера не получен в
течении определенного интервала времени в результате трех последовательных
попыток послать запрос, она посылает сообщение по e-mail и на наши пейджеры,
для того, что бы уведомить нас, что данный сервер требует внимания.
Если мы знаем, что не сможем прийти и перегрузить сервер, мы используем
на компьютере выключатель питания, управляемый через последовательный интерфейс
RS-232 для жесткой перезагрузки сервера в случае его сбоя. Таким образом,
небольшой PC компьютер, с двумя последовательными портами, достаточен для
индивидуального мониторинга 10 систем и обеспечения автоматического восстановления
работы в большинстве случаев некритических сбоев в работе серверов (т.е.
в случае проблем, не связанных с поломкой железа или переполнением раздела
диска лог-файлами).
Не удивительно, что существующие реализации стека TCP плохо переносят
работу в условиях высокой нагрузки, просто они никогда не попадали ранее
в такие условия. Стандартная, для ОС семейства UNIX модель обработки новых
соединений при помощи системного вызова fork очень плохо масштабируется,
и в частности из-за этого Netscape Server использует модель пула процессов
(process-pool model) (аналогичная схема используется сейчас и в популярном
http-сервере Apache-Прим. переводчика).
Размер очереди соединений (listen queue), который определяет максимальное
количество соединений, поставленных ядром в очередь на обслуживание (connections
pending by kernel). Соединение считается поставленным в очередь, когда
оно не было до конца установлено или было установлено и ожидает в системном
вызове accept(2). Если размер этой очереди слишком мал, клиенты
начинают получать сообщения "отказ в соединении" ("connection
refused") или "время ожидания истекло" ("connection
timed out"). Если же размер этой очереди слишком велик результаты
могут быть случайными: некоторые ОС продолжают функционировать как обычно,
в то время как производительность других существенно падает. Вам необходимо
поэкспериментировать с этим параметром, для нахождения его оптимального
значения. Версия 1.1 сервера Netscape Communications and Commerce Server
никогда не требует размера очереди соединений больше 128.
В реализациях стека TCP, ведущих свою историю от TCP стека BSD (BSD-based
TCP stack), размер очереди соединений контролируется параметром SOMAXCONN.
Исторически, этот параметр чаще всего задается при помощи директивы #define
в модулях ядра, так что если у вас нет доступа к исходному коду ядра ОС,
вам скорее всего необходимо получить патч от производителя этой ОС для
решения данной проблемы. В ОС Solaris, данный параметр называется
tcp_conn_req_max и может запрашиваться и устанавливаться при помощи
утилиты ndd(1M), применяемой к устройству /dev/tcp. Компания
Sun, производитель ОС Solaris, ограничила верхний предел
изменения параметра tcp_conn_req_max таким способом числом 32. Обратитесь
к компании Sun, для нахождения возможности повышения этого предела
в будущем.
Дополнительно, ядро ОС должно располагать достаточным объемом оперативной
памяти, для обеспечения буферизации всех посылаемых данных. В ОС, использующих
BSD-версию стека TCP эти буферы называются mbuf. Количество mbuf,
установленное по умолчанию в большинстве ядер ОС слишком мало, для обслуживания
большого трафика, и требуется настройка этого параметра. Мы установили,
что опять же, лучшим методом определения оптимального значения этого параметра
для конкретной ОС, является метод проб и ошибок. Если команда netstat
-m показывает, что запросы на выделение памяти не удовлетворяются,
скорее всего необходимо увеличить число mbuf. В ОС IRIX параметр,
который необходимо увеличить называется nm_clusters и находится
в файле /var/sysgen/master.d/bsd.
Протокол TCP предоставляет механизм keepalive, назначение
которого, в проверке наличия контакта с удаленным хостом и то, что хост
ожидает поступления данных. Этот механизм позволяет избежать ситуации,
когда при потере соединения, продолжается бесконечное ожидание прихода
данных. В интерфейсе сокетов, если сокет, ожидающий соединения сконфигурирован
с включенной опцией SO_KEEPALIVE, система начинает посылать TCP-пакеты
на удаленный хост после истечения определенного промежутка времени. Пакеты
посылаются с некоторым периодом, и соединение закрывается, если не удается
получить ответ от удаленной системы после определенного числа попыток.
Многие ОС предоставляют механизм для изменения интервала между посылкой
keepalive-пакетов. Обычно, период времени перед тем как система
начнет посылать их измеряется часами. Это сделано для того, чтобы избежать
посылки большого числа таких пакетов хостам, имеющим например открытые
telnet-сессии, которые могут продолжительное время просто не иметь данных
для пересылки.
Однако для WWW-сервера несколько часов это слишком большое время. Если
клиент не посылает информацию серверу в течении нескольких минут, то скорее
всего клиент стал недоступен. В прошлом, ошибки маршрутизаторов часто становились
причиной недоступности хостов. В современном Интернет эта проблема тоже
актуальна, наряду с увеличившимся числом пользователей, которые используют
протоколы SLIP и PPP для соединения с сетью. Опыт показывает,
что такие типы соединений являются не надежными и могут служить причиной
ситуаций когда машины внезапно становятся недоступными. Большинство HTTP-серверов
настроены на период ожидания данных от клиента порядка нескольких минут,
после чего соединение принудительно закрывается.
Если команда netstat -an показывает много сокетов в состоянии
IDLE, или много ожидающих HTTP серверов, вы должны для начала проверить,
устанавливается ли опция SO_KEEPALIVE. Затем надо проверить, допускает
ли ваша ОС изменение интервала между посылками пакетов keepalive.
Многие ОС, такие как IRIX и Solaris предоставляют механизмы
для изменения этого интервала с часов до минут. Большинство ОС, исследованных
нами, имели установленный по умолчанию интервал 2 часа; мы обычно уменьшали
его до 15 минут. Если ваша система не является выделенным WWW-сервером,
можно рассмотреть вопрос о большем интервале, для того, чтобы неактивные
telnet-сессии не увеличивали непроизводительный сетевой трафик. И третья
вещь, которую необходимо проверить - поддерживает ли реализация стека TCP
в вашей ОС закрытие сокета из-за таймаута во время стадии завершения соединения.
Дело в том, что некоторые BSD-версии стека TCP, на которых основаны многие
современные ОС, не используют механизм keepalive во время процедуры
закрытия соединения. Это означает, что соединение с удаленным хостом, который
становится недостижимым во время процедуры закрытия соединения, не закрывается
по тайм-ауту и остается открытым. Если вы заметите подобную ситуацию, обращайтесь
к производителю вашей ОС за исправлением (patch).
На сегодняшний день (не забывайте, что данная статья увидела свет в
1995 году-Прим. переводчика) доступны исправления, увеличивающие
размер очереди соединений для IRIX 5.2 и 5.3, так же включающие
поддержку таймера keepalive на этапе закрытия соединения. Эти исправления
так же устраняют некоторые другие проблемы, относящиеся к многопроцессорным
конфигурациям и производительности. Обращайтесь в компанию SGI за
текущими номерами patch'ей; если вы используете систему WebFORCE,
скорее всего эти исправления уже есть в вашей системе. При этом, большинство
параметров нуждающихся в настройке, находятся в файле /sysgen/master.d/bsd.
Если вы используете Solaris 2.3, вам абсолютно необходимо использовать
patch 101318. Кроме того, мы обнаружили, что версия 2.4 ОС Solaris
способна обслуживать гораздо более высокую нагрузку на стек TCP чем версия
2.3 с наложенными patch'ами. Поэтому, если имеется возможность, мы рекомендуем
вам произвести обновление ОС до версии 2.4, особенно, если нагрузка на
ваш интернет-узел стала приближаться к уровню нескольких сотен тысяч запросов
в день. И не забудьте наложить патч 101945 на версию 2.4.
Многие WWW-сервера позволяют производить определение доменного имени
клиента по его ip-адресу (reverce DNS lookup). Не смотря на то что это
весьма полезная информация, если заставлять WWW-сервер заниматься этим
в процессе работы, это может привести к существенному снижению производительности.
Причиной этого служит то, что запросы к DNS-серверу часто выполняются очень
медленно или вообще заканчиваются тайм-аутом. При этом увеличивается трафик
в вашей сети и расходуются некоторое (часто нетривиальное) количество сетевых
ресурсов на ожидание ответа от серверов DNS.
Еще одной проблемой при необходимости ведения лог-файлов при высокой
нагрузке сервера может стать использование для этой цели демона syslogd.
Мы рекомендуем вам не использовать для этой цели syslogd. Представьте,
что ваш WWW-сервер принимает 10 запросов в секунду, и информация о каждом
запросе должна попасть в лог-файл. Это приведет к 20 переключениям контекста
с процесса WWW-сервера на процесс syslogd и обратно в секунду. Эта
нагрузка является серьезным дополнением к выполнению основной работы WWW-сервера
- собственно обслуживанию клиентских запросов.
На нашем интернет-узле, лог-файлы чередуются (rotate) каждые 24 часа.
Закрытые файлы сжимаются и помещаются в специальный каталог. Специально
выделенная UNIX-машина в нашей сети используя утилиту rsh(1), улучшенную
поддержкой протокола SSL, перемещает сжатые лог-файлы со всех машин,
на которых работают WWW-сервера в отдельный раздел, емкостью 4 Гб. Там
лог-файлы разжимаются, соединяются в один дольшой файл и затем обрабатываются
нашим лог-анализатором. Тут же выполняется и определение имен машин клиентов
по ip адресам. Это позволяет выполнять только один запрос к DNS-серверу
для каждого уникального ip-адреса в течение дня. Весь процесс обработки
лог-файлов таким образом занимает порядка одного часа.
Один лог-файл за один день с WWW-нашего сервера, в сжатом состоянии,
обычно имеет размер около 70 Мб. Таким образом, за день у нас накапливается
примерно 250 Мб информации в лог-файлах. Наш метод манипулирования с лог-файлами
позволяет этой системе работать месяцами без внимания со стороны обслуживающего
персонала. Один раз в месяц эта информация сохраняется на 8-мм стриммер.
Общий анализ лог-файлов нашего интернет-узла показал следующее:
Кстати заметим, что в ОС IRIX имеется нестандартная но очень
полезная опция -C утилиты netstat(1), позволяющая просматривать
данные, собираемые netstat(1) в полноэкранном формате с динамическим
обновлением.
Так же, нами обычно используются жесткие диски (HDD) объемом не менее
1 Гб. Так как сейчас, каждый наш WWW-сервер производит около 200 Мб лог-файлов
(в несжатом виде) в день, да и обьем содержимого нашего интернет-узла постоянно
растет. Данные полученные с использованием утилиты sar и других
инструментов, позволяют сделать вывод, что наши машины проводят в среднем
от 5% до 20% времени в ожидании дискового ввода-вывода (disk I/O). Так
как эффективность работы дискового кеша уже достаточно велика, мы рассматриваем
возможность перемещения лог-файлов на отдельный fast/wide SCSI диск, и
собирается дополнительно поэкспериментировать с параметрами файловых систем.
К примеру, если CGI-скрипт принимает e-mail адрес, вводимый пользователем
и напрямую передает его программе sendmail в качестве аргумента
командной строки, и пользователь вместо адреса введет определенную последовательность
команд интерпретатора sh, то результаты работы подобного CGI-скрипта
могут быть весьма неожиданными. Такого рода неожидаемая интерференция между
различными программами - общее место нарушений безопасности. А так как
большинство людей, которые хотят использовать CGI-программы на своих WWW-страницах,
не являются специалистами по вопросам безопасности в ОС UNIX, то наиболее
простым методом решения данной проблемы является просто запрет выполнения
CGI-программ из персональных WWW-страниц пользователей.
Однако, можно и не применять таких жестких мер: например, можно использовать
интерпретатор taintperl[4] для CGI-скриптов пользователей.
Как известно, язык Perl на сегодняшний день является одним из наиболее
часто используемых языков при написании CGI-скриптов; Perl исключительно
мощный инструмент в области манипуляции с данными разных типов и создания
динамических HTML-документов. А taintperl - это версия языка Perl,
специально предназначенная для строгого контроля за используемыми данными.
Любые данные рассматриваются интерпретатором taintperl как априорно
опасные, и не могут быть использованы в сколько-нибудь опасных операциях,
если это не разрешено явно (например, при вызове внешних команд с параметрами-Прим.
переводчика). Это означает, что такого рода CGI-скрипты могут быть
относительно легко проверены лицом, ответственным за безопасность узла
на предмет возможных нарушений.
Мы назначили одно имя (alias) машине, на которой будут выполняться все
CGI-скрипты нашего интернет-узла. Затем, были разработаны специальные правила
для разработчиков наших HTML-документов, по которым все обращения к CGI-скриптам
должны были выполняться с использованием данного имени машины (например
cgi.netscape.com- Прим. переводчика). Побочный эффект этого решения
состоит так же в том, что все CGI-скрипты будут выполняться на одной машине,
в одном окружении и машина может быть специальным образом оптимизирована
для выполнения скриптов. А так как наш узел состоит из большого числа разнообразных
и несовместимых между собой машин, то отпала необходимость поддержки CGI-скриптов
на всех платформах, с учетом их специфики. В среднем, каждый день наш интернет-узел
обрабатывает порядка 50,000 запросов на исполнение CGI-скриптов (общее
количество запросов достигает 7,500,000).
Дополнительно было бы интересно произвести эксперименты с разделением
содержимого других типов (например графических файлов), с разносом собственно
HTML-документов и графики по разным машинам. В случае необходимости тут
может быть использована схема балансировки нагрузок, основаная на DNS (DNS-based
load-balancing), о чем уже говорилось выше (например имя gif.netscape.com
может быть использовано для обращения к нескольким машинам, чья работа
будет состоять только в обслуживании запросов к GIF-файлам).
FTP позволяет использовать механизм "сигнал занято", который
сообщает пользователю о том, что узел в данный момент обслуживает слишком
много запросов, и запрос пользователя не будет обработан. Это ограничение
легко настраивается администратором. HTTP так же предоставляет аналогичный
механизм, однако многие HTTP-сервера не используют его так как это легко
может привести пользователя в замешательство. Дело в том, что в отличие
от FTP, в HTTP нет понятия сессии (sessionless protocol), а используется
новое соединение для запроса каждого следующего файла, и поэтому легко
может возникнуть ситуация когда программа пользователя удачно получит тело
HTML-документа, и не сможет получить графические изображения, содержащиеся
в нем. Остается надеяться, что будущие работы в области усовершенствования
стандарта HTTP смогут улучшить данную ситуацию.
С точки зрения планирования интернет-узлов, лучше если сервис FTP будет
отделен от HTTP и обслуживаться отдельной машиной. Это удобно как с точки
зрения настройки и обслуживания, так и с точки зрения безопасности. Система,
обслуживающая только один сервис может быть легче настроена, меньше вероятность
ошибок в настройке, ведущих к дырам в безопасности, и в случае взлома пострадает
скорее всего только эта машина, а не весь ваш интернет-узел.
В этом случае возможен так же выигрыш в производительности. Область
применения протокола FTP - это обычно передача достаточно больших файлов,
в то время как HTTP имеет дело чаще всего с небольшими по объему файлами.
HTML-документ и включенные в него графические файлы обычно небольшого размера
и могут быть доставлены пользователю в короткий промежуток времени. Смешивание
этих двух типов файлов может затруднить обнаружение причины низкой производительности
системы, особенно когда два этих сервиса работают на одной машине.
Запуская сервисы FTP и HTTP одновременно на одной машине, мы установили,
что 128 процессов HTTPD и 50 одновременно активных FTP-соединений - это
предел нагрузки для машин используемого класса. Дальнейший рост нагрузки
приводит к ошибкам доступа к ресурсам для обоих протоколов. Однако та же
машина может без проблем обслуживать 250 активных FTP-соединений если убрать
сервис HTTP.
С другой стороны сильная сторона протокола HTTP - это возможность собирать
интересующую информацию о клиенте через разнообразные формы перед тем,
как предоставить доступ к каким-нибудь файлам для загрузки. Это совершенно
необходимо нам, так как во многих наших продуктах используется шифровальная
технология, для получения доступа к которой пользователь должен согласиться
с условиями лицензионных соглашений.
Мы надеемся, что технологии и информация, изложенные в данной статье
окажутся полезными для тех, кто собирается заниматься администрированием
интернет-узлов находящихся под высокой нагрузкой.
Dan Mosedale Lead UNIX Administrator
в компании Netscape. Он администрировал различные версии ОС UNIX достаточно
долго, чтобы совершенно разлюбить их. Dan любит повозиться со всякими таинственными
Интернет-штучками и написал FAQ о том как подключиться к MBONE.
William Foss Web-master в компании
Netscape. Его сегодня больше всего интересует, как продвинуть интернет-узел
как можно дальше теперь и в экономическом плане. До того, как начать работать
в Netscape, он имел завидную работенку - упражняться с большими UNIX-системами
и работал вместе с Jim Clark в компании Silicon Graphics.
Rob McCool игрок из команды техников
компании Netscape. Он принимал участие в проектировании и разработке Netsite
Communications and Commerce servers, В своей предыдущей жизни он так же
проектировал, разрабатывал, тестировал, документировал и поддерживал NCSA
httpd с самого начала и до версии 1.3.
Интересные ссылки:
Услуги юриста адвокат юридические услуги.
Комментариев к странице: 0 | Добавить комментарий
Редактор: Дмитрий Бан
Оформление: Евгений Кулешов