[Dédié] Ralentissement réseau TCP/IP

Nouveau WRInaute
Coucou !

Je vous fais part d'un problème que connais un des mes dédiés actuellement.

La config est un Bi Xeon , 4 GO de RAM, avec deux interfaces Gigabit Ethernet.

Le serveur (distrib RedHat 7.2) comporte essentiellemnt, un serveur Apache/PHP, et un serveur Shoutcast.

Lorsque on dépasse les 500/600 requêtes traitées par Apache chaque seconde, le serveur rame beaucoup. Le problème ne se situe pas au niveau d'Apache étant donné qu'il a toujours des slots de libre, et le temps de génération des pages est toujours très faible (0,001 à 0,1 sec).

Simplement, c'est l'envoi de ces pages qui traine. (le navigateur va trainer sur "Connexion à http://www.blablabla". Les pages ne finissent parfois pas de s'afficher. De même dans Shoutcast, on peut observer des coupures. SSH devient très lent, ainsi que FTP (connexion lente et transfert très saccadé)

Dans le log des messages, je peux voir, lorsqu'on est à fort trafic, plein de messages de ce genre se succéder :
Code:
nsXXXX kernel: NET: 1015 messages suppressed.
- Le trafic en download et upload ne dépasse pas la limite.
- Le serveur ne swappe pas du tout
- L'utilisation CPU tourne autour des 20% ou 30% (pas de pb)

J'ai pensé à une éventuelle saturation au niveau de la première interface réseau (eth0). J'ai donc équilibré le trafic entre eth0 et eth1 > Ca ne résoud rien.

J'ai donc pensé à un problème au niveau du traitement de la pile TCP/IP. J'ai donc tenté d'augmenter les paramètres suivants :
- net.ipv4.netfilter.ip_conntrack_max
- net.ipv4.netfilter.ip_conntrack_buckets
- net.ipv4.tcp_wmem
- net.ipv4.tcp_rmem
- net.ipv4.tcp_mem
- net.core.hot_list_length
- net.core.rmem_max
- net.core.rmem_default
- net.core.wmem_max
- net.core.wmem_default
- net.core.optmem_max

Le problème n'a absolument pas été résolu.

Auriez-vous une piste à suivre ?

Le résultat d'un netstat -s me donne ça :
Code:
Ip:
    745398919 total packets received
    3263154 forwarded
    0 incoming packets discarded
    738234390 incoming packets delivered
    847730253 requests sent out
    593 outgoing packets dropped
    476 fragments dropped after timeout
    1608 reassemblies required
    476 packet reassembles failed
Icmp:
    38650 ICMP messages received
    35 input ICMP message failed.
    Histogramme d'entrée ICMP
        destination unreachable: 10693
        timeout in transit: 488
        source quenches: 137
        echo requests: 27328
        echo replies: 4
    231826 ICMP messages sent
    0 ICMP messages failed
    Histogramme de sortie ICMP
        destination unreachable: 204498
        echo replies: 27328
Tcp:
    16709048 active connections openings
    82105403 passive connection openings
    844976 failed connection attempts
    731634 connection resets received
    68 connections established
    741509537 segments received
    847021115 segments send out
    11242309 segments retransmited
    8848 bad segments received.
    113985 resets sent
Udp:
    381046 packets received
    204394 packets to unknown port received.
    0 packet receive errors
    477001 packets sent
TcpExt:
    1394329 resets received for embryonic SYN_RECV sockets
    411 packets pruned from receive queue because of socket buffer overrun
    39 ICMP packets dropped because they were out-of-window
    24 ICMP packets dropped because socket was locked
    ArpFilter: 0
    93462248 TCP sockets finished time wait in fast timer
    68 time wait sockets recycled by time stamp
    58 packets rejects in established connections because of timestamp
    1344736 delayed acks sent
    3754269 delayed acks further delayed because of locked socket
    Quick ack mode was activated 729041 times
    33077 times the listen queue of a socket overflowed
    33077 SYNs to LISTEN sockets ignored
    187974152 packets directly queued to recvmsg prequeue.
    245457167 packets directly received from backlog
    18915718 packets directly received from prequeue
    76 packets dropped from prequeue
    25958423 packets header predicted
    87492666 packets header predicted and directly queued to user
    TCPPureAcks: 281876803
    TCPHPAcks: 57354842
    TCPRenoRecovery: 21585
    TCPSackRecovery: 1996906
    TCPSACKReneging: 62
    TCPFACKReorder: 1335
    TCPSACKReorder: 272
    TCPRenoReorder: 406
    TCPTSReorder: 233
    TCPFullUndo: 495
    TCPPartialUndo: 970
    TCPDSACKUndo: 42438
    TCPLossUndo: 339973
    TCPLoss: 1490295
    TCPLostRetransmit: 311
    TCPRenoFailures: 9726
    TCPSackFailures: 1140159
    TCPLossFailures: 109938
    TCPFastRetrans: 2863456
    TCPForwardRetrans: 71502
    TCPSlowStartRetrans: 2672066
    TCPTimeouts: 3110501
    TCPRenoRecoveryFail: 5337
    TCPSackRecoveryFail: 438424
    TCPSchedulerFailed: 76012
    TCPRcvCollapsed: 12398
    TCPDSACKOldSent: 748404
    TCPDSACKOfoSent: 5232
    TCPDSACKRecv: 824290
    TCPDSACKOfoRecv: 79
    TCPAbortOnSyn: 0
    TCPAbortOnData: 4506
    TCPAbortOnClose: 4495
    TCPAbortOnMemory: 0
    TCPAbortOnTimeout: 47385
    TCPAbortOnLinger: 0
    TCPAbortFailed: 0
    TCPMemoryPressures: 0

Merci bcp pour votre aide !
 
WRInaute passionné
bonjour,

le problème est permanant? il est seulement attaché au traffic? il est apparu dans quelles circonstances?
 
Nouveau WRInaute
Le problème apparait quand Apache traite plus 500 ou 600 requetes par seconde. Ca représente donc un trafic assez important.
une idée ? :roll:
 
WRInaute passionné
pourait-tu me donner le(s) message(s) juste avant et juste aprés nsXXXX kernel: NET: 1015 messages suppressed.?
 
Nouveau WRInaute
Il n'y a rien d'autre justement, juste une succession de ce genre de message (rien d'autre avant et apres pour me donner une piste)
 
Nouveau WRInaute
Bonjour,

Je suis interessé par ce topic.

Nous avons plusieurs serveurs en cluster et load balancing (avec LVS) et sur l'un d'eux j'ai ce même problème.

Nous avons un site qui réalise environ 700-1000 requetesSQL/secondes et pourtant à la fois le serveur MySQL ne rame et le serveur APache non plus.

Il semblerait que ce soit plus la pile TCP/IP

J'ai essayé d'augmenter certaines données, mais pas vraiment de résultat probants :

net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 1048576 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_wmem = 4096 1048576 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
# changed from 20480
net.core.optmem_max = 40960

# tcp-time-wait buckets pool size from
# net.ipv4.tcp_max_tw_buckets = 180000
# to 360000
net.ipv4.tcp_max_tw_buckets=360000
# increase from 300 to 1024
net.core.netdev_max_backlog=1024
#increase TCP Re-Ordering value in kernel from 3 to 5
net.ipv4.tcp_reordering=5
# change from 0 to 1 to Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
# change from 0 to 1 to enable syn cookies protection
net.ipv4.tcp_syncookies=1
# decrease from 1400 to 1200 for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time=1200
# decrease from 1400 to 25
net.ipv4.tcp_fin_timeout=25
# change from 0 to 1 to Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.default.log_martians=1
net.ipv4.conf.all.log_martians=1
#disable ICMP redirects
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0

Je suis donc interessé de savoir si vous avez résolu ce problème et si oui comment ?

Merci

Pascal
 
Discussions similaires
Haut