Bon, je ne savais pas trop où foutre ce sujet, partie réseau/partie linux, donc on va tenter ici !
Bonjour !
Description de la machine
VM linux sur un esx (OVH)
Distributor ID: Debian
Description: Debian GNU/Linux 7.0 (wheezy)
Release: 7.0
Codename: wheezy
uname -r
3.2.0-4-amd64
Ce serveur a 4 interfaces
- 2 interfaces publiques ( un certain nombre de domaines pointent sur la première, et d'autres sur la seconde, c'est un choix )
- 2 interfaces privées ( une sur un lan où la VM accèdent à d'autres VM, dont SGBD etc, et une sur un vlan sur lequel on a un pfsense qui monte un tunnel VPN jusqu'à chez nous, du coup le serveur est aussi "en local" pour nous)
Version de PHP:
PHP Version 5.4.45-0+deb7u2
System Linux nom_de_mon_serveur 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2+deb7u2 x86_64
Description de mon putain de problème :
On a un de nos sites (pointant sur une des deux IP publiques) sur lequel l'upload de fichiers (via des pages html/php) est devenu foireux un jour, et pas foireux à cause de fichiers trop gros, l'upload est devenu MEGA LENT dès que le fichier dépasse approximativement les 70 ko.
Là, suite à un redémarrage du serveur (suite plantage du stockage OVH), ce problème s'est propagé à l'autre interface.
Et le pire, c'est que le script qui reçoit le fichier (qui est la même page qui sert à afficher le mini formulaire de test avec un pauvre champ input type file ) ne donne quasi aucun temps d'exécution !
En gros, la page php mets 0.00005698 secondes entre la première ligne de code et la dernière, alors qu'en réalité elle a mise plusieurs minutes à s'afficher.
Sachant que mon script PHP ne fait rien d'autres qu'un var_dump de _FILES.
J'ai essayé d'un autre réseau que notre réseau de boite, le résultat est le même, donc ce n'est pas notre parefeu sur site qui merde.
Ce qui semble long, c'est donc quand on valide le formulaire et que la page envoie les données (dont notre fichier) à une autre page (donc elle même) et la réception par cette page, pas le traitement ensuite.
Rien dans les logs..
Exemple, uploader un pauvre fichier a mis plusieurs minutes à s'effectuer, alors que le script n'a duré que quelques secondes en réalité..
Code :
- array(1) { ["abc"]=> array(5) { ["name"]=> string(14) "fichier.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(14) "/tmp/phpZBR7wP" ["error"]=> int(0) ["size"]=> int(93536) } }
- Exécution du script : 0.00003695 secondes.
|
Mes
Code :
- upload_max_filesize
- post_max_size
- max_execution_time
- max_input_time
|
ne posent pas de problème, l'upload se fait, que le fichier fasse 3ko, 100ko, ou 2Mo, c'est juste qu'au delà de 70ko, même sur une ligne fibre 10Gb, la page mettra plusieurs minutes à gérer l'envoi/réception.
Toutes les pages de nos sites s'affichent dans des délais corrects, le top ne me parait pas déconnant :
Code :
- top - 09:32:39 up 1 day, 23:47, 2 users, load average: 3,75, 3,22, 2,55
- Tasks: 224 total, 4 running, 219 sleeping, 0 stopped, 1 zombie
- %Cpu(s): 43,0 us, 2,8 sy, 0,0 ni, 53,0 id, 0,0 wa, 0,0 hi, 1,3 si, 0,0 st
- KiB Mem: 8197076 total, 4453008 used, 3744068 free, 260980 buffers
- KiB Swap: 0 total, 0 used, 0 free, 2465476 cached
|
Le CPU varie entre 20 et 70, fait sa petite vie quoi.
Merci de me dire si ce n'est pas la bonne section, je copie-collerai.
Je sèche sur la résolution du problème, je ne suis pas expert serveur (dans ma boite, on fait tout, de la mise en place des serveurs, dev d'applications, accrochage des tableaux au mur et j'en passe, et sur certains aspects, je ne suis pas aussi compétent qu'une personne dédiée, typiquement sur ce genre de problème).
Thanks
[edit: console chrome pour un upload de moins de 300ko .. ]
Message édité par hinomura le 08-06-2017 à 10:20:42