Μεθοδολογία

Σκοπός αυτής της έρευνας είναι η αξιολόγηση της απόδοσης των Ελληνικών πακέτων shared hosting. Τα βασικά κριτήρια για αυτήν την αξιολόγηση είναι η ταχύτητα απόκρισης, η μέγιστη ταχύτητα επεξεργασίας (peak performance) καθώς και η ταυτόχρονη εξυπηρέτηση μεγάλου πλήθους επισκεπτών (consistency).

Για να μετρήσουμε τα προαναφερθέντα στοιχεία, χρησιμοποιούμε τις παρακάτω τεχνικές:

  • Response Time
  • TTFB
  • WP Benchmark Tool
  • WP Performance Tester
  • Grafana K6

Ξεκινήσαμε με μια απλή εγκατάσταση του Woodmart Theme, ενός από τα γνωστότερα Themes για WooCommerce. Εγκαταστήσαμε το WP Benchmark Tool και το WP Performance Tester. Αντιγράψαμε την εγκατάσταση μέσω του duplicator σε όλα τα πακέτα ώστε να έχουμε παντού μια πανομοιότυπη εγκατάσταση WP & WooCommerce.

Φροντίσαμε όλα τα πακέτα από όλες τις εταιρείες να έχουν επιλεγμένη την PHP 8.3

Είναι σημαντικό να τονίσουμε ότι δεν έχουμε εγκαταστήσει κανένα caching plugin στο WP και δεν έχουμε αλλάξει καμία παράμετρο optimization στο WordPress ή στο theme.

Response Time

Για να μετρήσουμε το response time τρέξαμε μια απλή εντολή ping.  Μέσα από τα windows, ανοίξαμε το command prompt και τρέξαμε την εντολή:

ping hosting.gr -t

Όπου hosting.gr το αντικαθιστάτε με το Domain name του κάθε πακέτου. 

Περιμένουμε να κάνει τουλάχιστον 100 ping requests και μετά σταματάμε την εντολή με το πάτημα του συνδυασμού Ctrl+C.

Εκεί μας έρχεται μια απάντηση με κάποια στατιστικά από τα οποία εμείς κρατάμε το Average όπου είναι και ο μέσος όρος

TTFB

Για να μετρήσουμε το TTFB χρησιμοποιήσαμε το Mozilla Firefox.

Δεν τον είχαμε ξαναχρησιμοποιήσει για άλλη εργασία στον ίδιο υπολογιστή και φροντίσαμε να είναι διεγραμμένο το πλήρες ιστορικό του.

Επίσης στο ενδιάμεσο, είχαμε αφήσει να περάσει τουλάχιστον μία εβδομάδα από την τελευταία εργασία ή επίσκεψη που κάναμε στο εκάστοτε πακέτο, ώστε να μειώσουμε την πιθανότητα να επέμβει κάποια cache.

  • Ανοίγουμε το Inspect πατώντας δεξί κλικ και Inspect στην αρχική του Firefox.
  • Επιλέγουμε την καρτέλα Network.
  • Γράφουμε στη μπάρα της διεύθυνσης το domain του πακέτου.
  • Επιλέγουμε το πρώτο στοιχείο στο Network που είναι το File (/) ή αλλιώς το Initiator (document).
  • Στο δεξιά πεδίο επιλέγουμε Timings.
  • Βλέπουμε το νούμερο στο downloaded που περιέχει τα Blocked, DNS Resolution, Connecting, TLS Setup, Sending & Waiting.

Φροντίζουμε να τρέξουμε όλα τα tests πάνω κάτω στον ίδιο χρόνο (πχ 10-11πμ) εξομοιώνοντας μια πραγματική επίσκεψη στην ιστοσελίδα. Θα ήταν άδικο να τρέξουμε σε μια εταιρεία το test τα ξεημερώματα που μπορεί να μην έχει καθόλου κίνηση ο server.

WP Benchmark Tool

Αφού εγκαταστήσαμε το δωρεάν plugin, το βρίσκουμε στο διαχειριστικό του WordPress στην Κατηγορία Tools -> WP Benchmark Tool.

Φροντίζουμε να είναι:

❌ Απενεργοποιημένο το Run each test only once, instead of five times.
✅ Ενεργοποιημένο το Skip persistent object cache tests
✅ Τσεκαρισμένο το Accept terms of usage
✅ Τσεκαρισμένο το Consent about GDPR

Πατάμε το Save Settings γιατί αλλιώς δεν αποθηκεύονται τα αποτελέσματα και μετά τρέχουμε το Start Benchmark

 

WP Performance Tester

Αφού εγκαταστήσαμε το δωρεάν plugin, το βρίσκουμε στο διαχειριστικό του WordPress στην Κατηγορία Tools -> WP Performance Tester.

  • Πατάμε το κουμπί Begin Performance Test
  • Καταγράφουμε τα αποτελέσματα σε ένα excel
  • Επαναλαμβάνουμε τη διαδικασία για 20 φορές
  • Βγάζουμε το μέσο όρο των αποτελεσμάτων από το excel και τον χρησιμοποιούμε για να συγκρίνουμε τα πακέτα.

 

Grafana K6

Κάναμε ένα λογαριασμό στο Grafana Cloud Κ6

Φτιάξαμε ένα νέο Project και μέσα σε αυτό δημιουργήσαμε ένα test για κάθε πακέτο φιλοξενίας. Παραθέτουμε παρακάτω το script που χρησιμοποιήσαμε για τη δοκιμή

import { sleep } from ‘k6’
import { Rate } from ‘k6/metrics’
import http from ‘k6/http’

 

// let’s collect all errors in one metric
let errorRate = new Rate(‘error_rate’)

 

// See https://k6.io/docs/using-k6/options
export let options = {
  batch: 1,
  throw: true,
  stages: [
    { duration: ‘2m’, target: 100 },
  ],
  ext: {
    loadimpact: {
      distribution: {
        Milan: { loadZone: ‘amazon:it:milan’, percent: 100 },
      },
    },
  },
}

 

export default function () {
  let params = {
    headers: { ‘X-CustomHeader’: ‘1’ },
  };
  let res = http.get(‘https://hosting.gr’, params)

 

  errorRate.add(res.status >= 400)

 

  sleep(1)
}
Εν συντομία, το script στέλνει 100 επισκέπτες στην ιστοσελίδα σε διάστημα 2 λεπτών, με αυξανόμενο ρυθμό. Επιλέξαμε να τους στείλουμε από έναν κόμβο στο Μιλάνο για να προσπαθήσουμε να έχουν τον ίδιο χρόνο απόκρισης μεταξύ των Datacenters που βρίσκονται στην Ελλάδα και στη Γερμανία. Ως επιτυχημένες απαντήσεις δεχτήκαμε αυτές που έχουν status 400 και πάνω στα headers.
 
Στο διάγραμμα βλέπουμε με τη μπλε γραμμή το response time το οποίο είναι λογικό να αυξάνεται όσο περνάει ο χρόνος και αυξάνονται οι χρήστες. Με την κόκκινη γραμμή βλέπουμε τα errors που μπορεί να κάνουν την εμφάνισή τους από κάποιο σημείο και μετά όπου έχει αυξηθεί ο φόρτος του πακέτου. Από εκείνο το σημείο και μετά, παύουν να μας ενδιαφέρουν τα requests καθώς ανεβαίνουν κατακόρυφα αφού έτσι κι αλλιώς ο server αρνείται να τα εξυπηρετήσει.