fbpx

別讓不工作的 IPv6 影響 PHP 的網路連線速度(DNS 解析錯誤)

最近發生 PHP 呼叫其他 WebService 速度過慢的問題,在 Linux OS 使用 TCP Socket 進行 HTTP 連線速度正常,但是使用 PHP 呼叫 fsockopen() 或 file_get_contents() 就是特別慢。仔細測試後發現如果是使用 IP Address 進行連線速度就正常,使用 Domain 就特別慢,看來問題就是出在 DNS 解析!

後來發現 Linux 的 IPv6 是不工作的,一般來說裝好 Linux 我都會關閉 IPv6 的相關功能與設定,接著關閉 IPv6 之後 PHP 的連線速度也就正常了。以下是關閉 Linux IPv6 的方法:

Disable IPv6 Networking Support - 關閉 IPv6 網路支援

編輯 /etc/sysconfig/network 並加入以下設定
NETWORKING_IPV6=no

Disable IPv6 Protocol Stack for Kernel - 關閉 IPv6 相關 module

編輯 /etc/modprobe.conf 並加入以下設定

alias net-pf-10 off
alias ipv6 off

Disable IPv6 Firewall - 關閉 IPv6 iptables 防火牆支援

[root@server ~]$ /etc/init.d/ip6tables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading ip6tables modules: [ OK ]
Turn ipv6 firewall off during future usage:

[root@server ~]$ /sbin/chkconfig --level 35 ip6tables off

Issue with localhost - 註解所有 IPv6 Hosts

編輯 /etc/hosts 註解所有 IPv6 解析設定

#::1    localhost.localdomain   localhost

參考資料

發佈留言