2016-02-24 13 views
1

J'ai un serveur FTP exécuté sur un serveur virtuel AWS. Nous avons environ 100 utilisateurs qui s'y connectent au cours d'une journée, en téléchargeant des images et d'autres fichiers. Tous sauf un fonctionnent parfaitement. Les fichiers arrivent, ce n'est pas un problème.Une erreur FTP (503 mauvaise séquence de commandes) résulte d'un problème client ou d'un problème serveur

Nous avons 1 utilisateur unique qui provoque les lignes de journaux suivants à générer - le nom d'utilisateur et IP a été supprimé intentionnellement et le « *** » a été ajouté pour mettre en évidence la ligne d'erreur:

> 227 Entering Passive Mode (54,79,122,6,195,96) 
> STOR media/UV1358A_3.jpg 
> 150 Opening data channel for file upload to server of "/media/UV1358A_3.jpg" 
> 226 Successfully transferred "/media/UV1358A_3.jpg" 
> PASV 
> 227 Entering Passive Mode (54,79,122,6,195,141) 
> STOR media/UV1358A_4.jpg 
> 150 Opening data channel for file upload to server of "/media/UV1358A_4.jpg" 
> PASV 
> 227 Entering Passive Mode (54,79,122,6,195,136) 
> 226 Successfully transferred "" 
> STOR media/UV1358A_5.jpg 
*********************************************** 
> 503 Bad sequence of commands. 
*********************************************** 
> PASV 
> 227 Entering Passive Mode (54,79,122,6,195,80) 
> PORT 122,99,115,5,212,227 
> 200 Port command successful 
> PORT 122,99,115,5,226,227 
> 200 Port command successful 
> PORT 122,99,115,5,130,124 
> 200 Port command successful 
> STOR media/UV1358A_9.jpg 
> 150 Opening data channel for file upload to server of "/media/UV1358A_9.jpg" 
> PORT 122,99,115,5,152,62 
> 200 Port command successful 
> STOR media/UV1358A_10.jpg 
> 150 Opening data channel for file upload to server of "/media/UV1358A_10.jpg" 
> PORT 122,99,115,5,161,49 
> 200 Port command successful 

Nous utilisons FileZilla Server 0.9.55 sur une boîte de Windows 2012.

Ma question, comme indiqué dans le titre est essentiellement .. Est-ce notre problème sur le serveur, ou est-ce le leur? Cette erreur 503 est-elle toujours due au fait que le client FTP a vissé quelque chose ou est-il possible que le serveur FTP interprète mal quelque chose? Je suis heureux de retourner chez le client et de dire «C'est notre problème», mais je soupçonne que ce n'est pas de notre côté.

Merci

Répondre

4

Le client envoie la commande PASV pour lancer un autre transfert de fichiers avant d'attendre le transfert précédent (la commande STOR) à terminer (226 réponse):


Le premier transfert commence :

> PASV 
< 227 Entering Passive Mode (54,79,122,6,195,141) 
> STOR media/UV1358A_4.jpg 
< 150 Opening data channel for file upload to server of "/media/UV1358A_4.jpg" 

La commande PASV pour un autre tra nsfer avant le premier transfert terminé:

> PASV 
< 227 Entering Passive Mode (54,79,122,6,195,136) 

Le premier transfert se termine seulement maintenant. Le nom de fichier dans le message est manquant, car le serveur FileZilla réinitialise les données de transfert de fichier (y compris le nom de fichier) lors du traitement de la commande PASV désorganisée (il aurait mieux valu rejeter la commande PASV déjà avec le 503).

> 226 Successfully transferred "" 

Une demande pour un autre transfert. Il échoue parce que le serveur FileZilla oublie la commande PASV désordonnée à la fin du premier transfert de fichier.

> STOR media/UV1358A_5.jpg 
< 503 Bad sequence of commands. 
+0

Merci Martin pour la réponse détaillée. Le client dit utiliser la bibliothèque FTP intégrée de PHP. Je vais sortir d'ici et dire qu'ils n'utilisent qu'une seule boucle filetée pour traiter les fichiers à télécharger. Ils ont déjà dit qu'ils téléchargent des fichiers sur des centaines de serveurs ftp d'autres clients sans problème et que nous sommes les seuls à avoir des problèmes et qu'ils ne feront donc pas de débogage à leur fin pour essayer de résoudre le problème. – Ads

+0

La bibliothèque FTP PHP ne vous protégera pas contre la violation du protocole de la manière décrite, si vous utilisez une API non bloquante (['ftp_nb_fput'] (http://php.net/manual/fr/function.ftp- nb-fput.php)). J'étais capable de reproduire cela facilement. Utiliser du code multithread serait probablement reproduire cela aussi, bien que je ne l'ai pas essayé. –

+0

N'êtes-vous pas géographiquement proche du client? Cela pourrait causer la différence aux autres serveurs. Si une latence est faible, les chances d'une condition de course comme celle-ci augmentent. –