Добавьте порождение сценария PHP к mysql-slow.log

Если я понимаю Ваши намерения правильно, Вы хотите, чтобы Ваш веб-сервер обычно использовал ISP-2 в качестве своего шлюза по умолчанию для исходящего трафика, за исключением его ответов на внешние веб-запросы, которые должны передать транзитом через ISP-1 вместо этого. Вот эскиз решения с помощью маршрутизации политики:

echo "101 webtraffic" >> /etc/iproute2/rt_tables

ip route add default table webtraffic via $ISP1_GW_LAN_IP
ip rule add fwmark 1 table webtraffic
iptables -t mangle -A OUTPUT -d \! $LAN_NET_PREFIX \
                             -p tcp -m tcp --sport 443 \
                             -j MARK --set-mark 1

где:

  • LAN_NET_PREFIX сетевой префикс Вашей LAN (например, 192.168.100.0/24), и
  • ISP1_GW_LAN_IP IP-адрес LAN Вашего шлюза к ISP-1 (например, 192.168.100.100).

Первое ip наборы команд маршрут по умолчанию на webtraffic таблица к Вашему шлюзу ISP-1 и второе гарантируют этому отмеченные пакеты 1 направляются с помощью webtraffic таблица. Наконец, iptables управляйте отмечает соответствующие исходящие пакеты, гарантируя, что их следующий транзитный участок будет к ISP-1.

Вот альтернативное решение, которое использует экспериментальное iptables модуль, цель МАРШРУТА:

iptables -t mangle -A POSTROUTING -d \! $LAN_NET_PREFIX \
                                  -p tcp -m tcp --sport 443 \
                                  -j ROUTE --gw $ISP1_GW_LAN_IP

Это правило переопределило бы решение по маршрутизации для исходящих веб-ответных пакетов, отправив им на Ваш шлюз ISP-1, вместо к ISP-2 по умолчанию. Весь другой трафик, включая веб-ответы клиентам на Вашей LAN, не был бы затронут. Как был указан в комментариях, цель МАРШРУТА вероятна не быть реализованной в любой системе, которая явно не исправила ее в ядро, так как это экспериментально.

0
задан 8 May 2013 в 08:13
1 ответ

MySQL не может узнать, какой сценарий PHP был запущен. Все, что он знает, - это соединение от имени пользователя, пароля, хоста и его запрос. Таким образом, он регистрирует все, что у него есть.

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

1
ответ дан 4 December 2019 в 21:18

Теги

Похожие вопросы