Το site κολλάει λόγω "Zombie Processes"

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από Antonis78 » 27 Ιούλ 2011 13:55

Καλησπέρα σε όλους

έχω ένα b2b website (φτιαγμένο με php) το οποίο το φιλοξενώ σε κάποια γνωστή εταιρεία του εξωτερικού (αν επιτρέπεται θα γράψω και το όνομα). Ενώ στην αρχή όλα δούλευαν μία χαρά εδώ και ένα μήνα το site σέρνεται απελπιστικά. Προσπαθείς να κάνεις login και πρέπει να κάνεις 3 refresh για να σε αφήσει να μπεις. Μίλησα λοιπόν με την εταιρεία και μου είπαν ότι το πρόβλημα είναι στον κώδικά μου και ότι ο server έχει πολλά "Zombie Processes".

Ερωτώ λοιπόν, ισχύει κάτι τέτοιο; Δηλαδή, η php δημιουργεί τέτοια processes; Αν ναι, τι πρέπει να αλλάξω/προσέξω στον κώδικα ώστε να απαλειφθεί το φαινόμενο αυτό;

Έψαξα στο google αλλά οι πληροφορίες λένε για κακό στήσιμο server και όχι για κακό προγραμματισμό.

Καμιά βοήθεια κανείς;

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3203
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από CyberCr33p » 27 Ιούλ 2011 14:06

Από αυτά που λες καταλαβαίνω ότι τρέχουν την PHP ως fastcgi. Δηλαδή τρέχουν μόνιμα κάποια php processes. Ας υποθέσουμε ότι τρέχουν 15 για το κάθε account. Με το που μπαίνει κάποιος στη σελίδα σου χρησιμοποιείται ένα από αυτά για όσο χρειάζεται για να εκτελεστεί ο κώδικας PHP και στη συνέχεια μένουν ανενεργά μέχρι να ξαναχρειαστεί κάποιο από αυτά να εκτελέσει κάποιο κώδικα PHP ξανά. Εάν υποθέσουμε ότι χρειάζεται 1 δευτερόλεπτα για να εκτελεστεί η PHP τότε καταλαβαίνεις ότι μπορείς να έχεις παράλληλα μέχρι και 15 φορές τη δυνατότητα να εκτελεστεί η PHP χωρίς καθυστέρηση. Συνήθως 10-15 processes είναι αρκετά για να εξυπηρετούν 50 ή και αρκετούς περισσότερους ταυτόχρονους επισκέπτες χωρίς να υπάρχει καθυστέρηση.

Τώρα σκέψου το ενδεχόμενο ότι αντί για 1 δευτερόλεπτο που χρειάζεται για να εκτελεστεί μια σελίδα σου κάτι να αλλάζει στη σελίδα (για παράδειγμα να τραβάει δεδομένα από εξωτερική ιστοσελίδα που έχει αργό server ή έχει πέσει ο server τους) και πλέον να χρειάζονται 20 δευτερόλεπτα για να εκτελεστεί η PHP. Καταλαβαίνεις ότι πλέον με 15 ταυτόχρονους χρήστες θα έχεις καθυστέρηση στη φόρτωση.

O συγκεκριμένος τρόπος "στησίματος" του server μπορεί να έχει ως αρνητικό να αργούν να φορτώσουν κακογραμμένες ιστοσελίδες αλλά ταυτόχρονα προστατεύει το server από υπερφόρτωση οπότε τις περισσότερες φορές θα "σώσει" από downtime άλλους πελάτες που έχουν accounts στον ίδιο server.

Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από Antonis78 » 27 Ιούλ 2011 14:18

Σε ευχαριστώ για την απάντηση.

Δηλαδή, σε μία σελίδα που μπορεί να έχω 3 queries χρησιμοποιώ 3 processes; Κάπως έτσι να το φανταστώ;

Ακόμα και έτσι όμως, γιατί μου αναφέρουν τα "Zombie Processes"; Πως δημιουργούνται αυτά;

Επιπλέον, να σου αναφέρω ένα σενάριο που κολλάει συνήθως

βάζεις τα login credentials στην φόρμα, κάνεις submit, και αν είναι σωστά τα στοιχεία σε κάνει redirect στην σωστή σελίδα. Στο redirect, μπορεί να κολλήσει και 2 ώρες αλλά το php script έχει εκτελεστεί γιατί αν κάνω refresh την σελίδα φαίνομαι σαν logged in.

Αυτό οφείλεται σε κακό προγραμματισμό που δημιουργεί "Zombie Processes";

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3203
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από CyberCr33p » 27 Ιούλ 2011 14:24

Μπαίνεις στο www.site.gr/page1.php γίνεται χρήση του php process, κάνεις κλικ σε άλλο link και γίνεται ξανά χρήση του ίδιου php process ή κάποιου άλλου. Δεν έχει σχέση με τα queries δηλαδή από την άποψη 3 queries = 3 processes, αλλά βέβαια έχει σχέση εάν έχεις κακογραμμένα queries που παίρνουν πολύ ώρα για να εκτελεστούν.

Τώρα "Zombie" κανονικά λέγονται τα processes που έχουν τελειώσει την λειτουργία τους και συνεχίζουν να εμφανίζονται σαν να μην τελείωσαν την λειτουργία τους. Δεν ξέρω γιατί το ανέφεραν έτσι. Πάντως όλα αυτά που γράφω είναι υποθέσεις, μόνοι οι ίδιοι ξέρουν τι συμβαίνει.

Πάντως για να μην το εμφάνιζε από την αρχή το πρόβλημα εάν η επισκεψιμότητα της ιστοσελίδας σου είναι η ίδια τότε πιθανών να έχει υπερφορτωθεί ο server τους. Ίσως ήσουν τυχερός και σε έβαλαν σε καινούργιο μηχάνημα και μετά από 1 μήνα να το γέμισαν με άλλα accounts.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από ThyClub » 27 Ιούλ 2011 14:32

Το ότι κολλάει στο redirection παίζει να έχεις θέμα με το htaccess σου ή με τον τρόπο που στέλνεις τα headers. Έτσι το κάθε proccess κάνει συνεχώς loop και σου τρώει τα resources.

just a wild guess

Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από Antonis78 » 27 Ιούλ 2011 14:44

CyberCr33p έγραψε:Μπαίνεις στο www.site.gr/page1.php γίνεται χρήση του php process, κάνεις κλικ σε άλλο link και γίνεται ξανά χρήση του ίδιου php process ή κάποιου άλλου. Δεν έχει σχέση με τα queries δηλαδή από την άποψη 3 queries = 3 processes, αλλά βέβαια έχει σχέση εάν έχεις κακογραμμένα queries που παίρνουν πολύ ώρα για να εκτελεστούν.

Τώρα "Zombie" κανονικά λέγονται τα processes που έχουν τελειώσει την λειτουργία τους και συνεχίζουν να εμφανίζονται σαν να μην τελείωσαν την λειτουργία τους. Δεν ξέρω γιατί το ανέφεραν έτσι. Πάντως όλα αυτά που γράφω είναι υποθέσεις, μόνοι οι ίδιοι ξέρουν τι συμβαίνει.

Πάντως για να μην το εμφάνιζε από την αρχή το πρόβλημα εάν η επισκεψιμότητα της ιστοσελίδας σου είναι η ίδια τότε πιθανών να έχει υπερφορτωθεί ο server τους. Ίσως ήσουν τυχερός και σε έβαλαν σε καινούργιο μηχάνημα και μετά από 1 μήνα να το γέμισαν με άλλα accounts.
Άρα δεν έχει να κάνει με τον αριθμό των queries, ωραία. To site δεν σέρνεται συνέχεια, ούτε σε όλες τις σελίδες. Τι καλές μέρες, δεν έχω πρόβλημα και τα queries μου, το πιο μεγάλο-αργό θέλει περίπου 1-1,5 δευτερόλεπτο να εκτελεστεί. Το "Zombie Processes" μου το ανέφεραν αυτοί σαν το λόγο που γίνεται αυτό και προσπαθώ να δω που μπορεί να οφείλεται σε κακό προγραμματισμό, όπως λένε.
ThyClub έγραψε:Το ότι κολλάει στο redirection παίζει να έχεις θέμα με το htaccess σου ή με τον τρόπο που στέλνεις τα headers. Έτσι το κάθε proccess κάνει συνεχώς loop και σου τρώει τα resources.

just a wild guess
Μπορείς να μου δώσεις κάποιο παράδειγμα; Χρησιμοποιώ αυτόν τον κώδικα για να κάνω redirect

Κώδικας: Επιλογή όλων

if (!$session_user_id)
	{
		header('Location: login.php');
	}
	else
	{
		if ($session_user_level != 4)
		{
			header('Location: admin/index.php');
		}
	}
Εννοείται ότι αν βάλεις τα σωστά στοιχεία δημιουργώ ένα SESSION variable με όνομα session_user_id και μετά κάνω αυτό το check που παραθέτω

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3203
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από CyberCr33p » 27 Ιούλ 2011 14:50

Εάν δεν το κάνει συνέχεια (και έχεις σταθερή κίνηση από επισκέπτες) τότε μάλλον θέμα υπερφόρτωσης του server θα είναι.

Σχετικά με το redirect θα είχες για παράδειγμα πρόβλημα, εάν προσπαθούσες από το index.php να κάνεις redirect πάλι στο index.php (στον εαυτό του) οπότε μετά από μερικές προσπάθειες θα πέταγε μήνυμα ο browser ότι υπάρχει "infinitive loop".

Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από Antonis78 » 27 Ιούλ 2011 15:11

Άρα μάλλον μπούρδες μου λένε για τα processes. Θα ζητήσω να μου αλλάξουν server μήπως δω διαφορά. Τέτοιο redirect δεν κάνω βέβαια οπότε μάλλον δεν είναι ούτε αυτό.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από pimpogio » 27 Ιούλ 2011 21:22

για βαλε κατω απο την header('Location: .....')
exit();
και πες μας αμα εφτιαξε

πιθανον ο κωδικας σου να εχει σοβαροτατο προβλημα ασφαλειας...

αν ρυθμισει καποιος το browser να κανει skip τα headers που ειναι για redirect
ισως μπορεσει να δει επιλογες που ειναι μονο για εξουσιοδοτημενους χρηστες..
αλλα και να κανεις ελεγχους ποιο κατω αυτο κανει αχρειστο load στο server γιατι το
script συνεχιζει να τρεχει οποτε με μια exit() κατω απο την header τερματιζει.

Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από Antonis78 » 28 Ιούλ 2011 12:26

Θα το παρακολουθήσω και θα σου πω. Όσον αφορά την ασφάλεια, κάνω και άλλους ελέγχους μετά οπότε νομίζω ότι είμαι καλά. Πάντως, δεν το ήξερα αυτό, σε ευχαριστώ

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Το site κολλάει λόγω "Zombie Processes"

Δημοσίευση από jpk » 01 Αύγ 2011 21:47

Για να ξέρουμε τι λέμε … όταν πουλάς 5 δολάρια απεριόριστο bandwidth και γενικά πόρους (π.χ. συνδέσεις στην βάση) κάτι δεν πάει καλά. Αργά η γρήγορα αν καταναλώνεις πόρους θα βρουν τρόπους να σου πουν «σήκω φύγε». Δεν είμαστε σίγουρα ηλίθιοι εμείς που πληρώνουμε server… (μπορεί και να είμαστε αλλά είναι άσχετο από τους servers). Το ότι τρέχεις παραπάνω νήματα από τα επιτρεπτά είναι από τα κλασσικά…

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες