서버 부하가 높으며 nginx가 사용 가능한 모든 대역폭을 소비하고 있으며 다음과 같은 오류가 발생하여 mysql 서버(다른 컴퓨터에 있음)에 연결할 수 없습니다.
'인증 패킷을 읽는 중'에서 MySQL 서버에 대한 연결이 끊겼습니다.
나는 mysql 트래픽이 항상 우선순위를 갖고 패킷이 절대로 삭제되지 않도록 일종의 서비스 품질을 설정하고 싶습니다.
centos 7/rhel에서 이 작업을 수행할 수 있는 방법이 있습니까?
또는 포트 80 트래픽을 900Mbps로 제한/형성하는 옵션이 있습니까?
답변1
iptables와 TC를 사용할 수 있습니다. 다음과 같습니다.
iptables -t mangle -A FORWARD ! -s 192.168.xxx.0/24 -d 192.168.xxx.xxx -j MARK --set-mark 1
tc qdisc add dev <eth> root handle 1: cbq bandwidth 100Mbit avpkt 1000 mpu 64
tc class add dev <eth> parent 1:0 classid 1:1 cbq rate 3200Kbit allot 1514 prio 1 avpkt 1000 bounded
tc filter add dev <eth> parent 1:0 protocol ip handle 1 fw flowid 1:1
필터는 호스트의 IP 주소에서 가져오므로 다음을 적용해야 합니다.
- 애플리케이션의 TCP 포트가 포함된 iptables 라인.
- 그리고 각 클래스의 대역폭