2012-08-26 8 views
6

Ich habe einen Client, der eine JSON-Antwort von einem Server abruft. Ich möchte berechnen, wie viele Anfragen/Antworten meine zugewiesene Überweisungsvergütung von einem Webhosting-Unternehmen (z. B. 100 GB pro Monat) verbrauchen.Wie wird die Netzwerkbandbreite zwischen Client und Server gemessen?

Wie kann ich das messen/berechnen?

Ich nehme an, dass ich nur einmal messen muss, da die Nachrichten eine konsistente Länge und Format haben.

Ich habe Kontrolle über Client/Server/Netzwerk. Alle können eindeutig der Aufgabe zugeordnet werden. Der Client ist eine IOS App und der Server ist ein PHP REST Web Service (unter Windows). Beides in meinem LAN.

Ich weiß nichts darüber und bisher haben nur die Größe des JSON mit strlen(). Geht das überhaupt in die richtige Richtung?

+1

Die Firebug Net Registerkarte kann Ihnen die Paketgröße geben. –

+0

Als ich diese Antworten lese, merke ich, dass ich in meiner Frage nicht klar war. Es ist kein HTML involviert. Ich habe eine (objective-c) App auf dem IOS-Gerät, die einen PHP Restful-Webdienst abfragt. Ich werde die Frage aktualisieren. Aber ich denke, ich kann die Antworten dafür anpassen. Ich werde es jetzt versuchen. – Polly

+0

Verwenden Sie Charles Proxy, um diese Informationen zu erhalten – Till

Antwort

2

Ich empfehle Charles Proxy Verwendung würde. Es ist ein unschätzbares Werkzeug zum Debuggen aller Arten von Informationen, die über HTTP ausgetauscht werden. Sie können damit die gesamte HTTP/s-Kommunikation von und zu Ihrem iPhone/iPod/iPad und dem Simulator verfolgen.

Es funktioniert leider nicht gut mit den meisten Android-Geräten, da diese nicht wirklich die Konfiguration eines systemweiten HTTP-Proxy unterstützen. Für diese Fälle und nicht HTTP-basierte Kommunikation würde ich empfehlen, WireShark zu verwenden.

In einigen seltenen Fällen, aus Gründen, die für mich immer noch unklar sind, scheitert Charles selten auf iOS-Geräten für HTTP-basierte Verbindungen - ein typischer Fall wäre GoogleAnalytics. Für diese wiederum würde ich WireShark empfehlen.

2

Die Länge der JSON-Zeichenfolge gibt Ihnen nur die Größe des Nutzdatenfelds in den übertragenen Netzwerkpaketen. Dieses Datenfeld kann in einem HTTP-Paket gekapselt sein und ein HTTP-Paket sollte vor der Übertragung in ein IP-Paket eingegeben werden. Jedes dieser Pakete hat Header-Felder, die zur Gesamtübertragungslänge beitragen.

Für eine genaue Schätzung sollten Sie zuerst die tatsächliche Länge des Antwortpakets mithilfe von Wireshark oder einem gleichwertigen Tool finden. Wenn dies der einzige Anforderungstyp für Ihre Anwendung ist, können Sie Ihre Bandbreite in die Antwortgröße Ihrer Serveranwendung aufteilen, um die maximale Anzahl von Anforderungen zum Erreichen des Grenzwerts zu erhalten. Dies ist jedoch normalerweise nicht der Fall, wenn Sie eine Webanwendung mit mehreren Webseiten haben, auf die von Clients aus zugegriffen werden kann, da jeder Zugriff (Browsing) zu einer Datenübertragung vom Server zum Client führt.

1

Ihre Apache-Logs wird die Anzahl der Bytes jeder Anforderung, aber vorausgesetzt, Sie eine völlig PHP-Lösung wollen, fügen Sie diese zu Beginn des Skripts:

<?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> .... 
Verwandte Themen