Одна вещь, которую я никогда не видел, что кто-либо еще делает по причинам, что я не могу вообразить, состоит в том, чтобы изменить формат файла журнала Apache на более легко parseable версию с информацией, которая на самом деле имеет значение для Вас.
Например, мы никогда не используем HTTP основной автор, таким образом, мы не должны регистрировать те поля. Я интересуюсь тем, сколько времени каждый запрос берет для обслуживания, таким образом, мы включим это. Для одного проекта мы также хотим знать (на нашей подсистеме балансировки нагрузки), если какие-либо серверы служат запросам медленнее, чем другие, таким образом, мы регистрируем название сервера, мы проксируем назад к.
Вот выборка от апачской конфигурации одного сервера:
# We don't want to log bots, they're our friends
BrowserMatch Pingdom.com robot
# Custom log format, for testing
#
# date proto ipaddr status time req referer user-agent
LogFormat "%{%F %T}t %p %a %>s %D %r %{Referer}i %{User-agent}i" standard
CustomLog /var/log/apache2/access.log standard env=!robot
То, что Вы не можете действительно сказать от этого, - то, который между каждым полем литеральный символ табуляции (\t). Это означает, что, если я хочу сделать некоторый анализ в Python, возможно, покажите не200 состояний, например, я могу сделать это:
for line in file("access.log"):
line = line.split("\t")
if line[3] != "200":
print line
Или если я хотел сделать, 'кто изображения использования горячих ссылок?' это было бы
if line[6] in ("","-") and "/images" in line[5]:
Поскольку IP рассчитывает в журнале доступа, предыдущем примере:
grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" logfile | sort -n | uniq -c | sort -n
становится чем-то вроде этого:
cut -f 3 log | uniq -c | sort -n
Легче читать и понять, и намного менее в вычислительном отношении дорогой (никакой regex), который, на журналах на 9 ГБ, имеет огромное значение в том, сколько времени оно берет. То, когда это становится ДЕЙСТВИТЕЛЬНО аккуратным, - то, если Вы хотите сделать то же самое для Агентов пользователя. Если Ваши журналы разграничены пространством, необходимо сделать некоторое соответствие регулярного выражения или поиск строки вручную. С этим форматом это просто:
cut -f 8 log | uniq -c | sort -n
Точно то же как вышеупомянутое. На самом деле любая сводка, которую Вы хотите сделать, является по существу точно тем же.
С какой стати я потратил бы ЦП своей системы на awk и grep, когда сокращенный сделает точно, что я хочу порядки величины быстрее?
Правильный поступок состоял бы в том, чтобы скорректировать макс. установку памяти сервера на нижний предел.
Кроме того, Диспетчер задач не покажет корректный объем памяти, выделенный SQL-серверу. Используйте DBCC MEMORYSTATUS вместо этого.
Кажется не,
Я перезапустил сервис, и он находится на довольно маленьком объеме памяти.