Varnish/Apache/Nginx βοήθεια στην επιλογή

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

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

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από Rapid-eraser » 22 Αύγ 2011 11:13

pimpogio πόσο βαθιά νυχτομένος είσαι ...
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 22 Αύγ 2011 12:28

δε τα λεω στην τυχη αυτα...
εκανα δοκιμη με δικο μου προγραμμα...
3000 threads x 100 requests per thread σε php file
default ρυθμισεις σε ενα μηχανημα αντιστοιχο με vps σε hardware και ολοι κλαταρανε απο cpu... (100% cpu usage)
αποδοση πανω κατω η ιδια... καλυτερος ο nginx μετα ο apache
και μετα ο lighttpd αλλα μικρες διαφορες..

η δοκιμη εγινε με php5-fpm (socket file +15% απο tcp/ip συνδεσεις)
apache:80
nginx:81
lighttpd:82
στο ιδιο μηχανημα σε ssd δισκο

o nginx αξιζει αλλα μονο για php οχι java python
ο lighttpd εχει μεγαλο αριθμο ανοικτων bugs

και τι τρεχει το youtube..

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

#1 Server Response: http://www.youtube.com
HTTP/1.1 200 OK
Date: Mon, 22 Aug 2011 08:29:01 GMT
Server: Apache
X-Content-Type-Options: nosniff
Set-Cookie: use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; path=/; domain=.youtube.com
Set-Cookie: VISITOR_INFO1_LIVE=caBa9G4Os5A; path=/; domain=.youtube.com; expires=Wed, 18-Apr-2012 08:29:01 GMT
Set-Cookie: PREF=f1=10000000; path=/; domain=.youtube.com; expires=Thu, 19-Aug-2021 08:29:01 GMT
Set-Cookie: GEO=eeb86d23726b1638466e081f482b09c2cwsAAAAzSUyuj/gzTlITTQ==; path=/; domain=.youtube.com
Expires: Tue, 27 Apr 1971 19:44:06 EST
Cache-Control: no-cache
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
# aptitude show apache2-mpm-worker

Περιγραφή: Apache HTTP Server - high speed threaded model
Each Apache Multi-Processing Module provides a different "flavor" of web server binary, compiled with a different processing model.

The worker MPM provides the default threaded implementation. It is recommended especially for high-traffic sites because it is faster and has a smaller memory footprint than the traditional prefork MPM.

# aptitude show apache2-mpm-event

Περιγραφή: Apache HTTP Server - event driven model
Each Apache Multi-Processing Module provides a different "flavor" of web server binary, compiled with a different processing model.

The event MPM is designed to allow more requests to be served simultaneously by passing off some processing work to supporting threads, freeing up the main threads to work on new requests. It is especially
suitable for sites that see extensive KeepAlive traffic.

This MPM is experimental and less tested than the worker and prefork MPMs.
Homepage: http://httpd.apache.org/

# aptitude show nginx

Περιγραφή: small, but very powerful and efficient web server and mail proxy
Nginx (engine x) is a web server created by Igor Sysoev and kindly provided to the open-source community. This server can be used as standalone HTTP server and as a reverse proxy server before some Apache
or another big server to reduce load to backend servers by many concurrent HTTP-sessions.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από Rapid-eraser » 22 Αύγ 2011 12:47

Δες τι τρέχει στην σελίδα του video.

O lighttpd έχει πολλά προβλήματα με memory leaks και είναι σε στάδιο re-write οπότε τον αφήνουμε έξω.

Το τεστ που κάνεις μπουκώνει λόγο του php5-fpm και δεν έχει να δείξει τίποτα όσων αφορά την απόκριση του webserver.

O nginx δεν έχει threads (για την ακρίβεια έχει single threaded workers μέσα από event loop) άρα δεν ξέρω πως τον τέσταρες κάτω από τις ίδιες συνθήκες με τον apache :)

Ο apache είναι σαφέστατα πιο καλά εξοπλισμένος από τον nginx όσων αφορά τις ευκολίες και τα διάφορα modules που υπάρχουν. Απλά η διαφορά είναι ότι ο apache έχει support se 100 πράγματα και κάνει τα 10 καλά ο nignx έχει support σε 10 πράγματα και κάνει και τα 10 καλύτερα.

PS: το παλικάρι θέλει να βάλει wordpress
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από CyberCr33p » 22 Αύγ 2011 12:48

Τι περιορισμούς έχει ο lighttpd σε σχέση με τον nginx ;

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από Rapid-eraser » 22 Αύγ 2011 12:56

Για περιορισμούς δεν ξέρω ίσα ίσα ο lighttpd είναι πιο ολοκληρωμένος σε feats από τον nginx

Η βασική τους διαφορά είναι ότι ο Lighttpd ανοίγει ένα process σε single thread και non-blocking I/O
ενώ ο nginx έχει ένα master process αλλά μοιράζει το load σε fixed αριθμό workers ( πάλι single threaded event loop).
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 22 Αύγ 2011 13:04

στον lighttpd δεν παιζει σωστα η python
δεν μπορεις να κανεις σωστo redirect
πχ δεν παιρνει redirect codes
Οταν βγει η 2 εκδοση λενε οτι θα τα εχουνε φτιαξει αυτα
(επισης τρωει την ποιο λιγη ram)

oσο για τον nginx
http://blog.dscpl.com.au/2009/05/blocki ... on-of.html


για php μονο η καλυτερη επιλογη ειναι nginx
αλλα αμα θες και αλλα πραματα απανω apache..

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από CyberCr33p » 22 Αύγ 2011 13:11

@Rapid-eraser:

Και σε Lighttpd μπορείς να έχεις περισσότερα από 1 workers, που όμως στις περισσότερες περιπτώσεις δεν έχει νόημα να το κάνεις και το αφήνεις στην default ρύθμιση.

Σχετικά με τα memory leaks δεν έχω πετύχει κάποιο και τον χρησιμοποιώ σε δεκάδες servers. Πάνω από 30-40mb δεν χρησιμοποιεί σε κανένα server παρ' όλο που μπορεί να έχει uptime πολλούς μήνες. Δεν γνωρίζω εάν υπάρχει memory links, αλλά πολλές φορές κάποιοι που αναφέρουν memory links έχουν κάνει λάθη στο στήσιμο της εφαρμογής τους, για παράδειγμα αντί να στέλνουν μεγάλα αρχεία μέσω του web-server τα στέλνουν μέσω PHP.

@pimpogio:

Σχετικά με python δεν γνωρίζω τι παίζει μιας και δεν με απασχόλησε ποτέ.

Πάντως έχει δίκιο ο Rapid που σου είπε ότι το test σου δεν είναι αξιόπιστο μιας και έχεις bottleneck την PHP. Για να κάνεις αξιόπιστο test πρέπει να έχεις τις ίδιες ρυθμίσεις στους web-servers, για παράδειγμα να απενεργοποιήσεις το logging σε όλους. Και φυσικά δοκιμάζεις στατικά αρχεία και όχι PHP. Στην περίπτωση της PHP εφόσον έχεις bottleneck όλα τα test παρόμοια θα βγουν.
Τελευταία επεξεργασία από το μέλος CyberCr33p την 22 Αύγ 2011 13:17, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από Rapid-eraser » 22 Αύγ 2011 13:14

Κάνει χρήση python to Wordpress ?
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 22 Αύγ 2011 13:15

με το logging χανει πολυ σε αποδοση το ειχα κλειστο...
θα ξαναδοκιμασω σε στατικα html αρχεια οχι σε php
γιατι οντως μπουκωνε απο την php

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από CyberCr33p » 22 Αύγ 2011 13:21

Μην κάνεις ένα test, δοκίμασε και με διαφορετικού μεγέθους αρχεία, δοκίμασε και με logging ανοιχτό, κλπ.

Πάντως ενδιαφέρον θα είχαν και tests σε πραγματικές συνθήκες. Π.χ. για ένα wordpress με μεγάλη βάση και ενεργοποιημένο το supercache.

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 22 Αύγ 2011 13:32

εδω ειναι το προγραματακι και οποιος θελει δοκιμαζει γιατι το apache benchmark εχει περιορισμους για να μην κανει καποιος dos attack

θελει τα org.apache.http.* libs

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

// File: Bench.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpProtocolParams;

public class Bench implements Runnable {

    private static final String USER_AGENTS[] = {
        "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US)",
        "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
        "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
    };
    private String url;
    private HttpClient client;
    private HttpGet get;
    private int numRequests;
    private Random rnd;
    private HttpResponse response;
    private BufferedReader br;

    public Bench(String url, int pages) {
        this.url = url;
        this.numRequests = pages;
        rnd = new Random(System.currentTimeMillis());
    }

    @Override
    public void run() {

        client = new DefaultHttpClient();

        for &#40;int i = 0; i < numRequests; i++&#41; &#123;
            // System.out.println&#40;"Thread&#58;"+Thread.currentThread&#40;&#41;.getName&#40;&#41;&#41;;
            HttpProtocolParams.setUserAgent&#40;client.getParams&#40;&#41;, USER_AGENTS&#91;rnd.nextInt&#40;USER_AGENTS.length - 1&#41;&#93;&#41;;
            get = new HttpGet&#40;url&#41;;
            try &#123;
                response = client.execute&#40;get&#41;;
                br = new BufferedReader&#40;new InputStreamReader&#40;response.getEntity&#40;&#41;.getContent&#40;&#41;&#41;&#41;;
                char&#91;&#93; cbuf = new char&#91;8192&#93;;
                int numRead;
                long sum = 0;
                while &#40;&#40;numRead = br.read&#40;cbuf&#41;&#41; >= 0&#41; &#123;
                    sum += numRead;
                &#125;

            &#125; catch &#40;IOException e&#41; &#123;
                e.printStackTrace&#40;&#41;;
                return;
            &#125;

        &#125;


    &#125;

    public static void main&#40;String&#91;&#93; args&#41; &#123;
        List<Thread> threads = new ArrayList<Thread>&#40;&#41;;
        for &#40;int i = 0; i < 3000; i++&#41; &#123; // 3k threads
            Thread t = new Thread&#40;new Bench&#40;"http&#58;//www.testsite.gr", 200&#41;&#41;; // 200 requests per thread
             t.start&#40;&#41;;
            threads.add&#40;t&#41;;
        &#125;
        for &#40;Thread thread &#58; threads&#41; &#123;
            try &#123;
                thread.join&#40;&#41;;
            &#125; catch &#40;InterruptedException ex&#41; &#123;
                Logger.getLogger&#40;Bench.class.getName&#40;&#41;&#41;.log&#40;Level.SEVERE, null, ex&#41;;
            &#125;
        &#125;

    &#125;
&#125;


Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10248
Εγγραφή: 28 Ιούλ 2001 03:00

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από Cha0s » 22 Αύγ 2011 14:09

Κλασσικά ο pimpogio λέεi τα δικά του, don't mind the wannabe-know-everything-showoff :lol:

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 23 Αύγ 2011 00:07

επισης ο apache εχει και την δυνατοτητα να τρεχει
με τα δικαιωματα του χρηστη (suexec) ...

που απο οτι ξερω δεν το εχουνε οι αλλοι οποτε ειναι και ποιο ασφαλες αυτο για cgi scripts ας πουμε
πχ αυτο

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

#include <iostream>
int main&#40;int argc,char** argv&#41;&#123;
std&#58;&#58;cout << "Content-Type&#58; text/html\n\n";
std&#58;&#58;cout << "<!DOCTYPE html>\n<html>\n<head>\n<title>C++ online</title>\n</head>\n<body>";
std&#58;&#58;cout << "<h1>C++ online</h1>\n";
std&#58;&#58;cout << "</body>\n</html>\n";
return 0;
&#125;
στον apache τρεχει με δικαιωματα χρηστη ενω στους αλλους με δικαιωματα www/www-data κτλπ

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από CyberCr33p » 23 Αύγ 2011 00:18

Αυτό δεν έχει σχέση με τον web-server. Γίνεται με το execwrap.

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

Varnish/Apache/Nginx βοήθεια στην επιλογή

Δημοσίευση από pimpogio » 23 Αύγ 2011 00:24

α δε το ξερα...

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

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

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