Bonjour
Je suis confronté à un problème qui dépasse largement mes connaissances ...
Je suis en train de développer un serveur web de génération de carte (dessin vectoriel)
J'utilise pour ce faire la librairie mapnik (C++ natif) que j'ai wrappé en C++/cli.
Ce même wrapper que j'inclus dans mon projet ASP.Net C#.
Lorsque j'effectue une requête unique d'image, tout se passe bien.
Mais dès que le serveur (IIS) doit traiter plusieurs requêtes simultanément j'ai des erreurs qui remontent de couches profondément encrées dans la dll de mapnik. ("access viloation" souvent)
Au bout de quelques requêtes des messages erreurs disant que l'espace est insuffisant pour traiter la demande ... pour finalement arriver à-ce que le serveur me dise que trop d'utilisateurs utilisent le service ...
Je cherche donc un peu à cerner le problème.
1. Comment se comporte les DLL inclues dans le serveur au niveau de l'espace mémoire ? 1 requête = 1 thread = 1 occurrence isolée et indépendante des autres ?
Ou bien je peux considéré que ma DLL est chargé une fois pour toutes et que donc les accès concurrent sont possibles ?
2. où puis-je trouver de l'info quant à la façon avec laquelle IIS gère plusieurs requêtes à la fois ?
3. Quelles sont les pistes, vers quoi dois-je m'orienter, pour contourner le problème ?
Dans un premier temps, je pensais à une variable au niveau du serveur me permettant de définir si une tuile est en cours de création et faire patienter les autres. (+/- 200 ms/tuile)
- mais puis-je être sûr que ma variable va persister ?
- Est-ce réellement fiable ?
- Cela va créer un goulet d'étranglement ...
- Comment faire "patienter" les autres requêtes ?
Merci de votre aide
Partager