Pro/Cloud Web: Communication avec la DB bloquée ?
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Pro/Cloud Web: Communication avec la DB bloquée ?

Par
DamW
Créé le 2017-09-01 08:35:12 (edited on 2024-09-04 12:34:12) dans Bases de données

Bonjour,

Nous possédons une application multijoueurs créée sur Unity qui se joue en équipe et qui donc communique très régulièrement avec une base de données pour récolter et mettre à jour des informations de l'équipe sur la DB.

Nous avions au départ l'offre Pro. Durant des évènements, l'application est installée sur plusieurs tablettes qui sont connectées à un même réseau Wifi. Lors de ce type d'évènement, au bout d'un moment les tablettes ne peuvent plus se connecter à la base de données durant plusieurs minutes.
Pour pouvoir continuer à utiliser l'application il faut par exemple partager son réseau 4G mobile et on peut de nouveau utiliser l'application normalement et donc communiquer avec la base de données. Le problème fonctionne aussi dans le sens contraire. Si on utilise l'application sur un même réseau 4G sur toutes les tablettes au bout d'un moment la communication avec DB n'est plus disponible mais si on bascule sur le réseau Wifi on peut à nouveau communiquer avec la DB.

J'en ai alors déduis que c'était sans doute dû à un nombre de requête maximum possible provenant d'un même utilisateur (ici la Wifi sur laquelle toutes les tablettes étaient connectées) sur un petit laps de temps et donc notamment l'option du nombre de connexions simultanées.

On s'est rendu compte que l'offre Pro possède un nombre de connexions simultanées limité à 30. On est alors passé sur l'offre Cloud Web qui elle permet un nombre de connexions simultanées entre 100 et 200.

Malgré ce changement, aucune différence n'a été remarqué. La communication avec la base de données se bloque après un certains temps d'utilisation de l'application sur plusieurs tablettes connectées à un même réseau.

Alors les questions que je me pose sont, d'où provient ce problème ?
Est-ce qu'il y a une protection automatique qui empêche un grand nombre d'échange avec la DB ?
Est-ce que c'est lié au paramètres max_user_connections ou finalement pas du tout ?
Comment résoudre ce problème qui devient très gênant pour nous et surtout le client ?


Merci par avance pour vos réponses.


8 réponses ( Latest reply on 2020-02-05 08:41:09 Par
DamW
)

juste pour info, cloudWeb (hébergement) n'a rien à voir avec cloudDB (base de données)

C'est modifié, merci.

Bonjour @DamW,

Je n'ai pas vraiment saisi qui se connecte à quoi… Es-tu dans le cas 1. ou 2. décrits ci-dessous?

1. Les applications (qui tournent sur smartphones et tablettes) se connectent à un serveur web (sur lequel tourne un site ou une API) qui lui même se connecte à une base de données.

2. Les applications (qui tournent sur smartphones et tablettes) se connectent directement à une base de données.

Merci d'avance pour l’éclaircissement =)

Mikaël

Bonjour,

Alors on est dans le premier cas où l'application se connecte sur un serveur web qui lui possède des fichiers dont un php qui va permettre de se connecter à la base de données pour récupérer ou ajouter des données.

Merci.

Dans ce cas, ton problème est-il bien la connexion à la base de données ou la connexion au serveur web? Il faut en effet bien distinguer 2 choses:
a. La connexion de la tablette (client web) vers le serveur web,
b. La connexion du serveur web (client du SGBD) vers le SGBD (serveur).
Pour a. comme pour b., tu as la notion de nombre de connexion max, mais ce ne sont bien sûr pas les même.
As-tu un message d'erreur pour t'aider à savoir si tu es dans le cas a. ou b.?

Alors dès que l'application n'arrive plus à se connecter à la base de données, je reçois en retour une erreur qui indique "HTTP/1.1 503 Service Unavailable". Cela reste ainsi durant environ une dizaine de minutes et revient ensuite à la normal.

Cependant lorsque je vais voir dans les logs "Statistiques des visites" du serveur web, dans "IT Reports -> Status Codes", le code HTTP qui a été le plus souvent rencontré après "200" est le "404".

Cela veut-il dire que le problème vient donc plutôt de la connexion du serveur web vers le serveur ?

L'erreur 503 est celle que tu dois creuser. Elle peut vouloir dire beaucoup de choses. L'information se trouve très probablement dans les logs de ton application (dans ton cas, les logs PHP donc).

En regardant les logs, les seules erreurs que je vois sont, pour la première celle-ci :

> ... ModSecurity: Warning. Operator GE matched 5 at TX:anomaly_score. ...
> [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [severity "CRITICAL"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "_ici est indiqué le lien du serveur web_"] [uri " _ici est indiqué le lien vers PHP_"] [user-agent:Dalvik/2.1.0 (Linux; U; Android 7.0; SM-G928F Build/NRD90M)] "runtime: apache" "firewall: DetectionOnly" "server: _ici est indiqué le lien du serveur web_"

Et la deuxième :

> "[-:error] ... ModSecurity: Warning. detected SQLi using libinjection with fingerprint 'sos' [file "/usr/local/apache2/conf/modsecurity/owasp_rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [line "66"] [id "942100"] [msg "SQL Injection Attack Detected via libinjection"] [data "Matched Data: sos found within REQUEST_COOKIES:$Path: \\x22/\\x22"] [severity "CRITICAL"] [ver "OWASP_CRS/3.1.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-sqli"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"] [tag "WASCTC/WASC-19"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/CIE1"] [tag "PCI/6.5.2"] [hostname "_ici est indiqué le lien du serveur web_"] [uri " _ici est indiqué le lien vers PHP_"] [user-agent:Dalvik/2.1.0 (Linux; U; Android 7.0; SM-G928F Build/NRD90M)] "runtime: apache" "firewall: DetectionOnly" "server: _ici est indiqué le lien du serveur web_""


Voilà ce que j'arrive à voir, seulement je comprends pas bien que veut réellement dire ces erreurs, autant la première que la deuxième.

Par exemple pour le deuxième log erreur je ne vois pas comment une "SQL Injection Attack" est possible sachant que la seule chose que j'ai fais et qui m'a emmené à l'erreur 503, c'est récupérer à plusieurs reprises et en très peu de temps un nom dans la base de données et cela sans utiliser de caractères spéciaux ou autre.

Les réponses sont actuellement désactivées pour cette question.