Σχετικά με το Load Average

Εισαγωγή

Ο φόρτος του server ουσιαστικά είναι ένας αριθμός. Ο αριθμός έχει τη μορφή Χ.ΧΧ και παίρνει τιμές που ξεκινάνε από το 0.00. Ο αριθμός αυτός εκφράζει το πλήθος των διεργασιών που περιμένουν στην ουρά για να εκτελεστούν από τον επεξεργαστή. Φυσικά, το φορτίο υπολογίζεται για συγκεκριμένη περίοδο του χρόνου και φυσικά, όσο μικρότερος είναι ο αριθμός τόσο το καλύτερο. Μια υψηλή τιμή συνήθως μεταφράζεται με μειωμένη απόδοση του server.

Πώς μπορείτε να βρείτε το φόρτο ενός server

Μπορείτε να βρείτε το φόρτο του server αν συνδεθείτε μέσω ssh στο λογαριασμό σας και πληκτρολογήσετε τη εντολή uptime. Έτσι, θα σας εμφανιστεί το server load και θα παρατηρήσετε ότι η τιμή του αλλάζει πολύ συχνά. Αυτό συμβαίνει γιατί υπολογίζεται στιγμιαία. Οι απόψεις διαφέρουν αρκετά στην ερμηνεία του φόρτου, ωστόσο θα πρέπει να είστε σίγουροι ότι όταν το server load είναι κάτω από την τιμή 1.00, δε θα πρέπει να αντιμετωπίζεται κανένα πρόβλημα απόδοσης και ταχύτητας στον ιστότοπο σας. Η αβεβαιότητα αυξάνεται όταν το server load ξεπερνά την τιμή 1.00. Οι περισσότερες εταιρείες web hosting εφαρμόζουν τον παρακάτω κανόνα: εάν ο server διαθέτει επεξεργαστή με ένα πυρήνα, ο φόρτος πάνω από 1.00 δεν θεωρείται καλός. Εάν υπάρχουν 2 πυρήνες, το server load πάνω από 2.00 δεν είναι καλό και ούτω καθεξής. Πρέπει όμως να καταλάβετε ότι αυτές τις τιμές είναι μέσες τιμές του φόρτου. Στην παρακάτω εικόνα βλέπουμε το load average για τα τελευταία (1) 5 λεπτά, (2) 10 λεπτά και (3) 15 λεπτά.

Δεν είναι όλες οι διεργασίες ίδιας βαρύτητας

Όλοι οι web servers υπερφορτώνονται κάποιες στιγμές, είτε επειδή κάποιος χρήστης κάνει κατάχρηση των πόρων, είτε λόγω overselling ή άλλων παραγόντων. Οι διεργασίες που απαιτούν πολλούς πόρους συνήθως προγραμματίζονται από το web host να τρέχουν σε στιγμές που δεν έχει κίνηση ο server. Πάντως, με τους σύγχρονους επεξεργαστές σήμερα, ακόμη κι όταν ο φόρτος ξεπερνά το 2.00 ο server ανταποκρίνεται πολύ γρήγορα. Θυμηθείτε τον ορισμό: ο φόρτος του server παρουσιάζει τον αριθμό των διεργασιών που περιμένουν να εκτελεστούν από τον επεξεργαστή. Δεν είναι όμως όλες οι διεργασίες ίδιες! Εάν οι διεργασίες είναι χαμηλής προτεραιότητας, όταν εμφανιστεί διεργασία με υψηλή προτεραιότητα τότε αυτή θα εκτελεστεί σχεδόν άμεσα, προσπερνώντας τη διεργασία χαμηλής προτεραιότητας.

Συμπεράσματα

Ο φόρτος του server είναι απλώς ένας παράγοντας ανάμεσα από πολλούς άλλους  (χρήση μνήμης, χρήση επεξεργαστή, μέγεθος του swap) και συχνά επηρεάζεται από αυτό. Για παράδειγμα, εάν ο server έχει λίγη μνήμη RAM,  θα χρησιμοποιήσει το swap. Αυτό σημαίνει ότι θα λειτουργεί έντονα το σκληρό δίσκο, το οποίο θα αυξήσει τη χρήση CPU και σαν αποτέλεσμα θα αυξηθεί το server load και οι σελίδες θα ανταποκρίνονται πιο αργά. Σε τέτοιες περιπτώσεις, η λύση είναι απλή: περισσότερη μνήμη RAM. Αυτό θα οδηγήσει σε χαμηλότερη χρήση του swap, χαμηλότερη χρήση CPU, χαμηλότερο φόρτο και γρηγορότερη ανταπόκριση. Θα πρέπει να παρατηρείτε συχνά το πως συμπεριφέρεται ο server. Εάν ο server είναι γρήγορος, ο φόρτος του server δε σημαίνει τότε πολλά. Εάν όμως παρατηρήσετε ότι το server load βρίσκεται 24 ώρες το 24ωρο σε υψηλά επίπεδα, θα πρέπει να ζητήσετε από το web host σας να κάνει κάτι γι' αυτό ή να σας μεταφέρει σε άλλο server με χαμηλότερο load.

Πληροφορίες για το Overselling

Εισαγωγή

Σε αυτό το άρθρο θα σας ενημερώσουμε σχετικά με το overselling. Το συγκεκριμένο θέμα είναι αρκετά σημαντικό για οποιονδήποτε χρειάζεται να γνωρίζει πως να επιλέγει το σωστό web host.

Ποιος είναι ο ορισμός του overselling;

Overselling ή αλλιώς υπερπώληση είναι όταν ο web host πουλάει τους πόρους του server του σε περισσότερους πελάτες απ' ότι μπορεί να εξυπηρετήσει.

Πώς με επηρεάζει το overselling;

Η απάντηση είναι απλή. Όσο περισσότερο κάνει overselling ο web host, τόσο περισσότερο επηρεάζεται το website σας. Μπορείτε να το δείτε και αναλογικά, υποθέτοντας ότι οι πόροι του server είναι:

100 μονάδες

και ο αριθμός των πελατών είναι: Χ πελάτες

Με έναν πρόχειρο υπολογισμό, οι πόροι του server μοιράζονται στους πελάτες με τη διαίρεση: 100 μονάδες / Χ πελάτες. Όπως μπορείτε εύκολα να παρατηρήσετε, όσο περισσότερους πελάτες έχει ένας server, τόσο λιγότεροι πόροι αντιστοιχούν στο website σας.

Εάν το overselling είναι τόσο κακό, γιατί οι εταιρείες το εφαρμόζουν;

Οι συγκεκριμένεις εταιρείες ποντάρουν στην ιδέα ότι δεν χρησιμοποιούν όλους τους πόρους που τους αναλογούν όλοι οι πελάτες του server την ίδια χρονική στιγμή. Η συγκεκριμένη ιδέα ακούγεται ως ιδανικός τρόπος διαμοιρασμού των πόρων του server, αλλά δυστυχώς σπάνια λειτουργεί. Ένας web host δε μπορεί να προβλέψει πότε ακριβώς τα websites των πελατών του θα έχουν κόσμο κι έτσι υπάρχουν στιγμές που πολλά websites έχουν αυξημένη κίνηση και προσπαθούν να χρησιμοποιήσουν τους περιορισμένους πόρους που υπάρχουν. Αυτή η κατάσταση θα οδηγήσει σε μη διαθεσιμότητα της σελίδας σας. Αυτό συμβαίνει λόγω παραγόντων όπως υψηλότερος φόρτος του επεξεργαστή (cpu usage), λιγότερο διαθέσιμο bandwidth (χαμηλότερη ταχύτητα της σελίδας σας) και έλλειψη χώρου στο δίσκο του server.

Υπάρχει απεριόριστος χώρος στο δίσκο και bandwidth;

Δεν υπάρχουν απεριόριστοι σκληροί δίσκοι, και απεριόριστο bandwidth! Μη σας ξεγελάνε! Πιο συγκεκριμένα, οι πόροι που δεν είναι απεριόριστοι είναι οι ακόλουθοι:

  • Επεξεργαστική ισχύς (CPU Usage)
  • Διαθέσιμο bandwidth (περιορίζεται από τη κάρτα δικτύου)
  • Αποθηκευτικός χώρος (περιορίζεται από το σκληρό δίσκο)
  • Μνήμη RAM

Ποιοι γνωστοί web hosts κάνουν overselling;

Κάποιοι από τους μεγαλύτερους web hosts που κάνουν overselling είναι: hostgator, dreamhost, hostmonster, bluehost κτλ. Για να προσδιορίσετε εύκολα αν μια εταιρεία κάνει overselling ή όχι πρέπει να κοιτάξετε αν τα πακέτα τους προσφέρουν απίστευτα πράγματα, για παράδειγμα 500GB αποθηκευτικό χώρο, 5TB μηνιαία μταφορά δεδομένων και σας ζητούν να προπληρώσετε 1 ή 2 χρόνια.

Τι θα συμβεί αν προσπαθήσω να χρησιμοποιήσω όλους τους πόρους που μου υπόσχονται;

Το πιο πιθανό είναι αυτοί οι web hosts να απενεργοποιήσουν το πακέτο σας και να σας ζητήσουν να αναβαθμιστείτε σε πιο ακριβό πακέτο όπως ένα VPS ή dedicated server. Διαβάστε προσεκτικά τους όρους χρήσης της εταιρείας γι' αυτό το θέμα.

Ένας web host που δεν κάνει overselling είναι καλύτερος από έναν που κάνει;

Η απάντηση βρίσκεται κυρίως στην κρίση σας. Εάν δίνεται μεγάλη αξία στη σελίδα σας, τότε δεν πρέπει ποτέ να διαλέξετε web host που κάνει overselling, απλώς γιατί ποτέ δε θα καταφέρετε να χρησιμοποιήσετε τους πόρους που σας υπόσχονται. Εάν το website σας δεν είναι σημαντικό, τότε μπορείτε να δοκιμάσετε την τύχη σας με έναν overseller.

Ποια είναι η κύρια διαφορά μεταξύ ενός overseller και ενός μη overseller;

Η προφανής διαφορά είναι ότι ο web host που δεν κάνει overselling μπορεί να σας προσφέρει περισσότερους πόρους για να χρησιμοποιήσετε, λιγότερο downtime και μεγαλύτερη ταχύτητα. Πάντα να ξέρετε ότι πληρώνετε παίρνετε.

Κάνει η CretaForce overselling;

Παρέχουμε πακέτα hosting με λογικά χαρακτηριστικά σε χώρο στο δίσκο και μηνιαία μεταφορά δεδομένων, καθώς και πολλά διαφορετικά πακέτα ώστε να καλύπτουμε από τη μικρότερη ως τη μεγαλύτερη ιστοσελίδα. Μη κάνοντας overselling στο δίσκο και στη μηνιαία κίνηση παρέχουμε σταθερές υπηρεσίες, οι ιστοσελίδες φορτώνουν γρήγορα, οι πελάτες μας είναι ευχαριστημένοι. Έτσι μπορεί να βγάζουμε μικρότερο κέρδος από κάθε server γιατί δεν τους υπερφορτώνουμε βάζοντας όσους περισσότερους πελάτες μπορούμε σε κάθε μηχάνημα, αλλά ταυτόχρονα μειώνεται και το κόστος παροχής της τεχνικής μας υποστήριξης. Σκεφτείτε τι υψηλό κόστος θα είχαμε εάν οι τεχνικοί μας δεν έκαναν τίποτα άλλο από το να προσπαθούν να λύσουν όλη την ημέρα προβλήματα υπερφορτωμένων servers!

Κενό ασφαλείας σε πολλά Wordpress Themes

Εισαγωγή

Το άρθρο αυτό αφορά κυρίως όσους χρησιμοποιούν για τις ιστοσελίδες τους το wordpress. Πριν λίγες ώρες δημουσιεύτηκε ένα σοβαρό πρόβλημα που αφορά αρκετά wordpress themes που χρησιμοποιούν το timthumb.php για να αλλάζουν διαστάσεις (resize) στις εικόνες των άρθρων. Περιληπτικά το πρόβλημα είναι ότι το timthumb.php επιτρέπει να ανεβάσει κάποιος αρχεία php μέσα στον φάκελο cache του timthumb που να περιέχουν κακόβουλο κώδικα (π.χ. php shell) το οποίο μπορεί να εκμεταλλευτεί κάποιος και να έχει πρόσβαση στα αρχεία της ιστοσελίδας σας. Περισσότερες πληροφορίες θα βρείτε στην ιστοσελίδα του Mark Maunder.

Λύση στο πρόβλημα

Αρχικά προτείνουμε να διαγράψετε ότι themes δεν χρησιμοποιείτε. Αυτό μπορεί να γίνει είτε με χρήση FTP είτε από το admin control panel του wordpress.

Στη συνέχεια θα πρέπει να συνδεθείτε με το Putty (ή άλλο SSH client) στο πακέτο hosting σας και να εκτελέσετε την εντολή:

View source
find . -name "timthumb.php"

Με αυτό το τρόπο θα δείτε εάν υπάρχουν αρχεία με όνομα timthumb.php σε κάποια ιστοσελίδα σας.

Μόλις τα εντοπίσετε θα πρέπει να τα κατεβάσετε με FTP και να τα ανοίξετε με κάποιο κειμενογράφο (π.χ. notepad).

Ψάξτε για το εάν υπάρχει στο αρχείο αυτό ο παρακάτω κώδικας:

View source
$allowedSites = array (
'flickr.com',
'picasa.com',
'blogger.com',
'wordpress.com',
'img.youtube.com',
);

Εάν υπάρχει τότε αντικαταστήστε τον με:

View source
$allowedSites = array ();

Εάν δεν υπάρχει τότε σημαίνει ότι έχετε παλιά έκδοση του timthumb.php που δεν έχει το συγκεκριμένο πρόβλημα.

Επίσης προτείνω να κάνετε έλεγχο εάν είναι ενεργό το ALLOW_EXTERNAL. Εάν βρείτε την παρακάτω γραμμή:

View source
define ('ALLOW_EXTERNAL', TRUE);

αλλάξτε την σε:

View source
define ('ALLOW_EXTERNAL', FALSE);

Μόλις τελειώσετε με τις αλλαγές ανεβάστε ξανά το αρχείο timthumb.php με FTP αντικαθιστώντας το παλιό αρχείο.

Επίλογος

Όσοι εντοπίσατε πρόβλημα στο theme σας και αφού κάνετε τις απαραίτητες διορθώσεις, προτείνω να επικοινωνήσετε με τον δημιουργό του theme και να τον ενημερώσετε ώστε να βγάλει νέα έκδοση του theme με την τελευταία έκδοση του timthumb που διορθώνει το πρόβλημα.

Lighttpd Rewrites για το Joomla

Εισαγωγή

Ο Lighttpd είναι ο web-server που χρησιμοποιούμε για να παρέχουμε τις υπηρεσίες hosting και ο οποίος σχεδιάστηκε με γνώμονα την ασφάλεια, ταχύτητα, ευελιξία και συμβατότητα με τα περισσότερα λειτουργικά συστήματα. Για τη λειτουργία rewrites, ο Lighttpd δεν χρησιμοποιεί την ίδια σύνταξη με τον Apache, αλλά έχει το δικό του plugin ώστε να κάνει ο ίδιος τα rewrites ή μπορεί να γίνει και χρήση άλλων γλωσσών προγραμματισμού ώστε να κάνουν αυτές τα rewrites. Πριν λίγα χρόνια είχα δημοσιεύσει τα rewrites ώστε να δουλεύει η επιλογή "Search Engine Friendly URLs" στο Joomla και μπορείτε να τα βρείτε στο lighttpd wiki. Για τα συγκεκριμένα rewrites έγινε χρήση του ModMagnet και της γλώσσας προγραμματισμού LUA. Παρακάτω θα σας δείξω βελτιωμένα rewrites ώστε να μην στέλνουν στο index.php του Joomla συγκεκριμένες καταλήξεις (π.χ. jpg, gif, png, css, js).

Πλεονεκτήματα

Για να καταλάβατε το πλεονέκτημα αυτού σκεφτείτε ότι διαγράφετε κάποιες εικόνες. Σκεφτείτε τώρα να επισκεφτεί μια μηχανή αναζήτησης την ιστοσελίδα σας ή κάποιο blog με μεγάλη επισκεψιμότητα χρησιμοποιεί τις εικόνες σας που πλέον δεν υπάρχουν. Με τα παλιά rewrites γίνεται έλεγχος για το εάν υπάρχει κάποιο αρχείο και εάν δεν υπάρχει το στέλνει στο index.php ενώ με τα καινούργια όχι. Έτσι δεν γίνεται υπερφόρτωση της PHP.

Ρυθμίσεις

Θα πρέπει να προσθέσετε τον παρακάτω κώδικα στο αρχείο /usr/local/etc/lighttpd/joomla.lua

View source
function file_exists(path)
	local attr = lighty.stat(path)
	if (attr) then
		return true
	else
		return false
	end
end
 
function removePrefix(str, prefix)
	return str:sub(1,#prefix+1) == prefix.."/" and str:sub(#prefix+2)
end
 
function file_excludes(filename)
	local extensions = {jpg = true; gif = true; png = true; jpeg = true; js = true; css = true; txt = true};
	if extensions[(filename:match"%.(.-)$" or ""):lower()] then
		return true
	else
		return false
	end
end
 
local prefix = ''
 
if (not file_excludes(lighty.env["physical.rel-path"])) then
	if (not file_exists(lighty.env["physical.path"])) then
		request_uri = removePrefix(lighty.env["uri.path"], prefix)
		if request_uri then
			lighty.env["uri.path"] = prefix .. "/index.php"
			local uriquery = lighty.env["uri.query"] or ""
			lighty.env["uri.query"] = uriquery
			lighty.env["physical.rel-path"] = lighty.env["uri.path"]
			lighty.env["request.orig-uri"] = lighty.env["request.uri"]
			lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]
		end
	end
end

και στη συνέχεια να προσθέσετε στο lighttpd.conf την παρακάτω ρύθμιση:

View source
$HTTP["url"] !~ "^/(|index.html|xcache-admin|awstatsclasses|awstatsicons|awstatscss|awstats|webmail|phpmyadmin)(/|$)" {
index-file.names = ( "index.php" )
magnet.attract-physical-path-to = ( "/usr/local/etc/lighttpd/joomla.lua" )