J'ai un serveur Tomcat avec 250 threads de connexion. Lorsque je simule le téléchargement de fichiers simultanés pour 30 fichiers (chacun 100 Mo), le processeur et la mémoire RAM de la machine serveur atteignent un pic, c'est-à-dire 95% d'utilisation. J'utilise le bloc de code suivant pour lire les données de fichier de HTTP Post.Tomcat Nombre maximal de téléchargements simultanés de fichiers
// request is instance of HTTPServletRequest
int nDataLength = request.getContentLength();
byte dataBytes[] = new byte[nDataLength];
int bytesRead = 0;
int totalBytesRead = 0;
int bytesLimit = 1024;
InputStream in = new InputStream(request.getInputStream());
try
{
while(totalBytesRead < nDataLength)
{
bytesRead = in.read(dataBytes, totalBytesRead, bytesLimit);
totalBytesRead += bytesRead;
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
in.close();
}
Mes doutes sont:
- Quel pourrait être le nombre maximal de fichiers simultanés de Uploads (chaque fichier de 100 Mo) qu'un serveur Tomcat peut gérer?
- Y at-il une optimisation requise dans mon code pour utiliser les 250 threads de connexion?
- L'introduction de
sleep
peut entraîner de longs téléchargements. Comment écrire du code efficace?
Merci d'avance.
salutations, Kingsley Reuben J
NOTE: Je ne serai pas en mesure d'utiliser des applications tierces pour résoudre ce problème
Il est difficile de donner une réponse définitive. Cela dépend de plusieurs facteurs: la puissance fournie par votre machine (CPU, RAM), la charge à côté de cette tâche, ce que vous voulez faire avec les fichiers téléchargés (stockage ou autre traitement), la bande passante disponible ... –
La machine serveur n'a pas d'autre procédé que de recevoir des fichiers et de les stocker.En outre, la machine dispose de 8 Go de RAM avec processeur Dual Core –
Ne pas faire à la main, utilisez une bibliothèque appropriée comme Commons FileUpload (http://commons.apache.org/fileupload/) Pas de bugs, et correctement dimensionnable – skaffman