Χρησιμοποιήστε όλους τους κόμβους CPU με τη λειτουργία κλαστού
Μια διεργασία Node.js χρησιμοποιεί έναν πυρήνα της CPU. Το Total.run({ cluster: N }) ξεκινά έναν master που δημιουργεί N διεργασίες worker, καθεμία από τις οποίες τρέχει ολόκληρη την εφαρμογή σας, και το λειτουργικό σύστημα μοιράζει σε αυτές τις εισερχόμενες συνδέσεις (το 'auto' αντί για αριθμό αφήνει τον master να προσθέτει νήματα όσο αυξάνεται το φορτίο). Τρέξτε το σε λειτουργία release (release: true, που το παραγόμενο σενάριο εκκίνησης ορίζει με το --release)· ο watcher της λειτουργίας debug δεν προορίζεται για cluster. Στο σενάριο εκκίνησης είναι μία μόνο επιλογή:
Total.run({ cluster: 4, release: true }); // or cluster: 'auto'Κάθε worker είναι ξεχωριστή διεργασία με τη δική της μνήμη, επομένως ό,τι κρατάτε σε μια μεταβλητή, στο CACHE ή στο MEMORIZE υπάρχει μία φορά ανά worker και δεν μοιράζεται: δύο αιτήματα του ίδιου χρήστη μπορεί να καταλήξουν σε διαφορετικούς workers. Κρατήστε την κοινή κατάσταση σε βάση δεδομένων, σε αποθήκη αρχείων ή σε υπηρεσία μηνυμάτων και τις συνεδρίες σε αποθήκη που μπορούν να διαβάσουν όλοι οι workers. Οι προγραμματισμένες εργασίες όπως το CRON() τρέχουν επίσης σε κάθε worker, γι' αυτό προστατέψτε τες αν πρέπει να τρέξουν μία φορά.
Ελέγξτε ότι όλοι οι workers είναι ενεργοί. Μετά από μια ανάπτυξη, ζητήστε επανειλημμένα ένα URL όπως το /pid/ παρακάτω και μετρήστε τα διαφορετικά id: πρέπει να είναι όσα οι workers που ζητήσατε.
Κάθε εργαζόμενος έχει το δικό του ID της διαδικασίας.Το παράδειγμα ξεκινά δύο εργαζόμενους και περιλαμβάνει αυτό το ID στην απάντηση.
exports.install = function() {
ROUTE('GET /pid/', pid);
ROUTE('GET /dir/', dir);
};
function pid($) {
$.json({ pid: process.pid });
}
function dir($) {
$.json({ dir: PATH.root() });
}require('total5');
Total.run({ cluster: 2, port: 8766, release: true });