Рейтинг:0

Apache открывает и закрывает каждый журнал при каждом доступе?

флаг in

Вопрос касается журналов доступа и ошибок, особенно с несколькими хостами (экземпляры apache, установленные более чем на одном сервере) и централизованного хранения журналов в сетевой файловой системе.

Закрывает ли apache каждый файл журнала после каждой записи?

Если да, то на загруженном сервере, на котором размещается множество сайтов, каждый из которых имеет собственный журнал, может ли это стать потенциальным узким местом в производительности?

Если нет, то каково решение, когда несколько серверов записывают данные в одно место регистрации в сетевой файловой системе?

Michael Hampton avatar
флаг cz
В чем проблема?
Рейтинг:1
флаг cn

Закрывает ли apache каждый файл журнала после каждой записи?

Используйте источник, он находится по адресу: https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/loggers/mod_log_config.c?view=markup

Вы можете прочитать из него:

251 * log_writer имеет значение NULL перед открытием файла журнала и
252 * устанавливается в непрозрачную структуру (обычно fd) после ее открытия.

Это своего рода намеки на то, что он открыт только один раз. На самом деле, если вы посмотрите на код, он открывается рано, при инициализации, а затем никогда не закрывается по очевидным причинам производительности.

Если нет, то каково решение, когда несколько серверов записывают данные в одно место регистрации в сетевой файловой системе?

Абсолютно никогда не делайте этого по двум причинам. Во-первых, не регистрируйтесь удаленно таким образом. Зарегистрируйтесь локально (и отправляйте файлы журналов отдельно, например, вы можете чередовать их ежечасно) или используйте соответствующие демоны, системный журнал по умолчанию знает, как отправлять содержимое журнала по UDP (или TCP), как и более новые решения. Не монтируйте удаленный диск и не записывайте на него файлы журналов, это убьет производительность и создаст целую кучу проблем (особенно если вы имеете в виду удаленный, как в «NFS»).

И даже если локально, каждое приложение должно вести журнал в свой собственный файл журнала, не допускайте ведения журнала нескольких приложений в один и тот же файл, это обязательно создаст всевозможные условия гонки, перезапись и т. д. Apache сам по себе является одним приложением, даже если он разветвляется. , но если у вас есть 2 Apache, работающих отдельно на одном хосте с разными конфигурациями, каждый из них должен вести журнал в свои собственные файлы журналов.

Или посмотрите на функцию Apache для входа в каналы, но у нее тоже есть недостатки.

Рейтинг:0
флаг it

Насколько я знаю, вы не можете одновременно записывать несколько веб-серверов Apache в один и тот же файл журнала.

Для кластеров вы либо позволяете каждому узлу записывать в свой собственный файл журнала, а затем выполняете некоторую постобработку, чтобы объединить их, либо позволяете Apache генерировать события системного журнала, отправлять их на центральный сервер системного журнала, где вы можете объединить их в один файл, или вы используйте решение для агрегации журналов, такое как ELK Stack, Graylog, Splunk и/или другие, для отправки событий журнала со всех узлов кластера в единую базу данных больших данных.

VagrantPaladin avatar
флаг in
Я ожидал, что это будет ответ. Поэтому я протестировал его с 4 экземплярами apache, работающими в 4 контейнерах, и все записи в один и тот же журнал. Я запустил «нагрузочный» тест с кучей процессов, запрашивающих страницу, и дал ему поработать в течение часа, и он работал нормально. Я полностью ожидал, что только один экземпляр сможет писать в журнал, поэтому я не знаю, что с ним делать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.