7
votes

Comment mesurer la bande passante réseau utilisée entre le client et le serveur?

J'ai un client qui reçoit une réponse JSON d'un serveur. Je tiens à calculer le nombre de demandes / réponses consumera mon allocation de transfert allouée à une société d'hébergement Web (par exemple 100 Go par mois).

Comment puis-je mesurer / calculer cela?

Je suppose que je n'ai besoin que de mesurer une fois parce que les msg sont d'une longueur et d'un format cohérents.

J'ai le contrôle sur le client / serveur / réseau. Tout peut être dédié de manière unique à la tâche. Le client est une application iOS et le serveur est un service Web de repos PHP (sous Windows). À la fois sur mon réseau local.

Je ne sais rien à ce sujet et je viens de recevoir la taille du Json en utilisant strallen () . Est-ce que même se dirigeant dans la bonne direction?


4 commentaires

L'onglet Firebug Net peut vous donner la taille du paquet.


Lire ces réponses, je me rends compte que je n'étais pas clair dans ma question. Il n'y a pas de HTML impliqué. J'ai une application (Objective-c) sur le périphérique IOS qui interrogee un service Web PHP reposant. Je vais mettre à jour la question. Mais je pense que je peux adapter les réponses à cela. Je vais essayer maintenant.


Utilisez Charles Proxy pour obtenir cette information


Merci @till. Super outil. Il a fallu des minutes à installer, apprenez à utiliser et faire le travail. Mettez votre commentaire comme une réponse et je l'accepterai.


3 Réponses :


2
votes

La longueur de la chaîne JSON ne vous donne que la taille du champ de charge utile dans les paquets réseau transférés. Ce champ de données peut être encapsulé dans un paquet HTTP et HTTP doit être placé dans un paquet IP avant la transmission. Chacun de ces paquets dispose de champs d'en-tête qui contribuent à la longueur totale de la transmission.

Donc, pour une estimation précise, vous devez d'abord trouver la longueur réelle du paquet de réponses à l'aide de Wireshark ou d'un outil équivalent. S'il s'agit du seul type de requête pour votre application, vous pouvez diviser votre bande passante à la taille de réponse de votre application serveur pour obtenir le nombre maximal de demandes pour atteindre la limite. Cependant, ce n'est généralement pas le cas si vous avez une application Web qui possède plusieurs pages Web accessibles à partir de clients, car tout accès (navigation) entraînera un transfert de données du serveur au client.


0 commentaires

1
votes

Vos journaux Apache auront le nombre d'octets de chaque demande, mais en supposant que vous souhaitez une solution complètement PHP, ajoutez ceci au début de vos scripts:

<?php
    function log_input() {
        # get raw post data
        $length = strlen(file_get_contents('php://input'));

        if (function_exists('apache_request_headers')) {
            # quick, but not accurate
            $length += strlen(serialize(apache_request_headers()));
        } else {
            # add fudge for HTTP/1.1 etc
            $length += strlen($_SERVER['QUERY_STRING']) + 14;
            foreach ($_SERVER as $k => $v) {
                if (preg_match('/^HTTP/i', $k)) {
                    $length += strlen($k) + strlen($v);
                }
            }
        }

        $s = sprintf("%s\t%s\n", date('c'), $length);
        file_put_contents('/tmp/input.log', $s, FILE_APPEND);
    }           

    function log_output() {
        $s = sprintf("%s\t%s\n", date('c'), ob_get_length());
        file_put_contents('/tmp/output.log', $s, FILE_APPEND);
    }

    log_input();
    register_shutdown_function('log_output'); 
    ob_start();

?>
<html> ....


0 commentaires

2
votes

Je recommanderais d'utiliser Charles proxy . C'est un outil inestimable pour déboguer toutes sortes d'informations échangées via http. Vous pouvez l'utiliser pour la traçage de toutes les communications HTTP / S de et à votre iPhone / iPod / iPad ainsi que le simulateur.

Cela ne fonctionne malheureusement pas trop bien avec la plupart des appareils Android, car ceux qui ne prennent pas vraiment en charge la configuration d'un proxy HTTP à l'échelle du système. Pour ces cas et une communication non basée sur HTTP, je vous recommanderais d'utiliser Wireshark .

Dans certains cas rares, pour des raisons qui ne sont toujours pas claires pour moi, Charles échoue rarement sur des périphériques iOS pour les connexions à base de HTTP - un cas typique serait GoogleAnalytics. Pour ceux-ci, encore une fois je recommanderais Wireshark.


0 commentaires