MySQL Sicherheit und Performance

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von GoMoPa, 28.04.2009.

  1. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,
    wir haben einen dedizierten Server mit 6GB Ram und 2xXEON 2.3 GHZ.

    Wir haben zur Zeit massive Probleme, dass der Datenbankserver abstürzt bzw. überlastet ist, sehr viele Firmen versuchen unseren Content zu replizieren bzw. versuchen Massenanfragen an unseren Server.

    Ich habe aus Sicherheit-/Performancegründen bereits den Proxy/Opensource Firewall GreenSQL davor geschaltet, leider stürzt dieser Dienst auch in regelmässigen Abständen mit der Fehlermeldung:

    Hat jemand Erfahrungen mit MySQL-Sicherheit und Performancenoptimierung, erkennt jemand Redudanzen in nachfolgender My.cnf? Für Tipps und Hilfe wäre ich dankbar.

    Code:
    [mysqld]
    set-variable=local-infile=0
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    
    
    #max_connections=1000
    #query_cache_size=128M
    #thread_cache_size=8
    
    #max_connections=1000
    
    ft_min_word_len=3
    
    #key_buffer_size = 64M
    #thread_cache_size = 40
    #query_cache_size = 16M
    #query_cache_limit = 16M
    #thread_concurrency = 3
    #tmp_table_size = 8M
    #sort_buffer_size = 1M
    #read_buffer_size = 1M
    #read_rnd_buffer_size = 1M
    #myisam_sort_buffer_size = 128M
    #thread_cache_size = 32
    
    join_buffer_size=1M
    sort_buffer_size=1M
    read_buffer_size=1M
    read_rnd_buffer_size=1M
    table_cache=256M
    #max_allowed_packet=4M
    key_buffer=256M
    key_buffer_size=256M
    thread_cache=256M
    thread_concurrency=2
    thread_cache_size=40
    thread_stack=128K
    concurrent_insert=2
    query_cache_limit=256M
    query_cache_size=4M
    query_cache_type=1
    skip-bdb
    #skip-innodb
    interactive_timeout=120
    max_connections = 500
    max_user_connections = 500
    
    wait_timeout= 30
    connect_timeout= 30
    long_query_time = 2
    # Log Querys
    log-slow-queries=/var/log/mysql/mysql-slow.log
    
    #key_buffer = 16M
    #net_buffer_length = 8K
    
    #sort_buffer_size = 128K
    #myisam_sort_buffer_size = 256K
    #join_buffer_size = 2M
    
    #query_cache_size = 4M
    #thread_cache = 32
    #table_cache = 1024
    #max_allowed_packet = 256K
    
    #max_connections = 60
    #low_priority_updates = 1
    #long_query_time = 2
    #[mysqld]
    #query_cache_limit       = 1M
    #query_cache_size        = 32M
    #query_cache_type        = 1
    #thread_concurrency     = 4
    #thread_cache           = 64
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Also diese Konfiguration ist vermutlich für den Server völlig daneben - da kann sicher einiges optimiert werden.

    Lass mal das mysqltuner-Script drüber laufen.

    Poste auch mal ein paar weitere Infos zu dem System (was genau drauf läuft, IO-Werte, Load, ...)
     
  4. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    TuningPrimer Ergebnis:

    Top Auszug:

    Aus Sicherheits-/Performance Gründen wurde bereits der/die Proxy/Opensource Firewall GreenSQL vorgeschalten.

    Apache 2 mit PHP5 ist installiert und es läuft Plesk 9.1.


    Ich hoffe das reicht als Information.
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Ein paar mehr Infos zum System wären nicht schlecht (was wird gehostet, ...)

    Ansätze zum Optimieren hast Du ja schon aus dem Script - ein erster Ansatz wäre vermutlich erst mal eine my-huge.cnf oder my-large.cnf zu verwenden und von dort aus weiterzumachen.

    Dann generell auch das Datenbank- und Query-Design analysieren, evtl. über php-Beschleuniger nachdenken, persistente SQL-Verbindungen, ...
     
  6. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,
    wir verwenden das Woltlab Burning Board und viele Thirdpart Softwarelösungen und Eigenentwicklungen die mit Joins etc arbeiten. Wir haben mehr als 2000 Gleichzeitig online.

    Die Frage ist einfach, was & wie ich dort optimieren kann - ich bin in Sachen MySQL Datenbankkonfiguration eher unerfahren.

    Kannst du die obige My.cnf gemäß Tuning Primer anpassen?

    Also das Betriebssystem ist: Redhat Enterprise Linux 5

    Die Serverausstattung laut Plesk wie folgt:

    CPU GenuineIntel, Intel(R) Xeon(R)CPU E5410 @ 2.33GHz
    Version Parallels Plesk Panel v9.0.1_build90090127.18 os_RedHat el5
    OS Linux 2.6.18-92.el5
    Key number PLSK.00830197.0003
    System Uptime: 41 day(s) 00:26

    Memory Usage
    Total

    Used

    Free

    Shared

    Buffer

    Cached
    Usage
    5.81 GB

    5.53 GB

    285.65 MB

    0 B

    238.75 MB

    1.83 GB

    63.65%

    Swap Usage
    Total

    Used

    Free
    Usage
    2.00 GB

    136.00 KB

    2.00 GB




    Festplatten sind 2x160 GB im RAID-Verbund.
     
  7. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    DB-Optimierung geht leider nicht "einfach so" - das ist ein langwieriger Prozess, wo man sich an das Optimum herantastet - welches überall anders ist.

    Für's erste - Caches hochdrehen, da scheint bei euch noch einiges an Reserven vorhanden zu sein. Dann mal ein Query-Log anschalten und schauen, was so reinkommt, ob indices korrekt sind, Slow-Queries analysieren (und immer wieder die div. Analyser-Scripte drüber laufen lassen. Auch mal die Status-Seite von z.B. phpMyAdmin anschauen, da sind auch einige Dinge zu finden).

    Dieses SQLGreen würde ich rauswerfen - schneller wird's meist durch ein Einsatz eher nicht, meist ist das Gegenteil der Fall. Und entsprechende Sicherheitsgewinne bringt das meist auch nicht, wenn man eine gepflegte und supportete Applikation benutzt. Wie das bei WBB aussieht kann ich konkret nicht sagen.
     
  8. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Mir wäre schon viel geholfen, wenn die My.cnf einigermaßen vernüpftig wäre und er mehr in den Cache legen würde, die SWAP ist 2 GB und eigentlich bis auf 163k immer frei, dort könnte man das Auslagern und würde Performance und Ressourcen gewinnen.
     
  9. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Öhm, sei froh, daß der SWAP leer ist - alles andere wäre mehr als kontraproduktiv.

    Such einfach mal im System nach der my-huge.cnf / my-large.cnf - vermutlich unter /usr/share/doc/mysql-server* zu finden.

    Empfehlenswert als Buch dazu ist übrigens "High Performance MySQL: Optimierung, Datensicherung & Lastverteilung"
     
  10. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Ich habe die Huge gefunden und werde diese mal verwenden und schauen was passiert.

    Gibt es noch Optimierungsmöglichkeiten für den Webserver?
     
  11. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Sicher - aber was soll ich da sagen?

    Aus den bisherigen Infos lässt sich da recht wenig orakeln... Setzt ihr irgendwelche Beschleuniger, Cache-Systeme, Pre-Generatoren, ... ein? Ist die Serverkonfig entsprechend optmiert? Ist das OS an sich optimiert?

    Ernsthaft: Hausaufgaben muss man auch selbst machen.
     
  12. GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,
    die gesamte Administration wurde von ehemaligen Webmastern gemacht - die Spaß hatten ihren Unfug zu treiben. Ich baue das ganze jetzt Stück für Stück auf.

    PHP verwendet nur die ganzen Zend-Geschichten und es läuft modsec und modevansive für die Sicherheit und eben GreenSQL.

    Ich dachte schon an mod_cache für den Apache2 oder den Umstieg auf litespeed.


    die my-huge.cnf scheint mir laut tuning-primer aber schlechter zu sein, als meine eigene My.cnf
     
  13. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  14. #12 marce, 28.04.2009
    Zuletzt bearbeitet: 28.04.2009
    marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Hast Du auch schon http://rackerhacker.com/mysqltuner/ ausprobiert?

    Die Tuning-Scripte geben nur Hinweise - wie die zu bewerten sind musst Du entscheiden. Das hängt auch vom jeweiligen System, den Workflows, dem Userverhalten, ... ab.

    (wir haben z.B. hier auf einem System mit 4GB Speicher Caches in der Gesamtgröße von ca. 6GB definiert - weil aber die Verteilung der Abfragen und die Art der Cache-Nutzung "passend" ist funktioniert das problemlos ohne Swap-Nutzung)

    DB-Administration ist nicht zu unrecht ein komplexes Thema...
     
  15. #13 GoMoPa, 28.04.2009
    Zuletzt bearbeitet: 28.04.2009
    GoMoPa

    GoMoPa Grünschnabel

    Dabei seit:
    28.04.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Jupp Datenbankadministration ist ein sehr komplexes Thema und nein MySQL Tuner habe ich noch nicht probiert, aber jetzt:

    Code:
    [root@ded1461 ~]# ./mysqltuner.pl
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
            LANGUAGE = "de_DE.UTF-8@euro",
            LC_ALL = "de_DE.UTF-8@euro",
            LANG = "en_US.UTF-8"
        are supported and installed on your system.
    perl: warning: Falling back to the standard locale ("C").
    
     >>  MySQLTuner 1.0.0 - Major Hayden <major@mhtx.net>
     >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
     >>  Run with '--help' for additional options and output filtering
    
    -------- General Statistics --------------------------------------------------
    [--] Skipped version check for MySQLTuner script
    [OK] Currently running supported MySQL version 5.0.45-log
    [OK] Operating on 64-bit architecture
    
    -------- Storage Engine Statistics -------------------------------------------
    [--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
    [--] Data in MyISAM tables: 1G (Tables: 602)
    [--] Data in InnoDB tables: 3M (Tables: 190)
    [--] Data in MEMORY tables: 0B (Tables: 1)
    [!!] Total fragmented tables: 51
    
    -------- Performance Metrics -------------------------------------------------
    [--] Up for: 9m 33s (47K q [82.613 qps], 5K conn, TX: 231M, RX: 27M)
    [--] Reads / Writes: 70% / 30%
    [--] Total buffers: 314.0M global + 12.2M per thread (250 max threads)
    [OK] Maximum possible memory usage: 3.3G (56% of installed RAM)
    [OK] Slow queries: 0% (51/47K)
    [OK] Highest usage of available connections: 14% (37/250)
    [OK] Key buffer size / total MyISAM indexes: 256.0M/602.2M
    [OK] Key buffer hit rate: 99.8% (30M cached / 62K reads)
    [OK] Query cache efficiency: 78.1% (24K cached / 30K selects)
    [OK] Query cache prunes per day: 0
    [OK] Sorts requiring temporary tables: 6% (131 temp sorts / 1K sorts)
    [OK] Temporary tables created on disk: 11% (177 on disk / 1K total)
    [OK] Thread cache hit rate: 99% (37 created / 5K connections)
    [OK] Table cache hit rate: 95% (155 open / 163 opened)
    [OK] Open file limit used: 10% (245/2K)
    [OK] Table locks acquired immediately: 97% (13K immediate / 13K locks)
    [OK] InnoDB data size / buffer pool: 3.6M/8.0M
    
    -------- Recommendations -----------------------------------------------------
    General recommendations:
        Run OPTIMIZE TABLE to defragment tables for better performance
        MySQL started within last 24 hours - recommendations may be inaccurate
    
    
    Wir haben extra den stärksten Server genommen den wir bei unserem ISP bestellen konnten, Konfiguration wie oben aufgeführt.

    Wir haben wie gesagt sehr viel Content und im Schnitt zwischen 1000-2500 User gleichzeitig online, im Monat kommen wir auf mehr als 500.000 Besucher.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Folgende Apache Konfiguration verwenden wir:
    Code:
    LoadModule evasive20_module   /usr/lib64/httpd/modules/mod_evasive20.so
    
    <IfModule mod_evasive20.c>
        DOSHashTableSize    3097
        DOSPageCount        2
        DOSSiteCount        50
        DOSPageInterval     1
        DOSSiteInterval     1
        DOSBlockingPeriod   10
    </IfModule>
    
    
     KeepAlive On
     KeepAliveTimeout 4
     MaxKeepAliveRequests 500
    ServerLimit 60
     MaxClients 60
     StartServers 30
     MinSpareServers 30
     MaxSpareServers 30
     MaxRequestsPerChild 1000
     ServerTokens Prod
     ServerSignature On
     HostnameLookups Off
    
     
Thema:

MySQL Sicherheit und Performance

Die Seite wird geladen...

MySQL Sicherheit und Performance - Ähnliche Themen

  1. Freelancer gesucht - Debian / MySQL / Pearl / PHP - Erfahrung

    Freelancer gesucht - Debian / MySQL / Pearl / PHP - Erfahrung: Hallo, suche einen Freelancer für einen Webdienst... mit obigen Kenntnissen! Bitte Stundensatz mit Kurzbeschreibung mitteilen. NOCH WAS: Also...
  2. MySQL 5.7 angekündigt

    MySQL 5.7 angekündigt: Oracle hat MySQL 5.7 in der offiziellen Version angekündigt. Das populäre freie Datenbanksystem wird in Version 5.7 bei bestimmten Abfragen...
  3. MySQL 5.7 angekündigt

    MySQL 5.7 angekündigt: Oracle hat MySQL 5.7 in der offiziellen Version angekündigt. Das populäre freie Datenbanksystem wird in Version 5.7 bei bestimmten Abfragen...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. MySQL Datenbank / Phpmyadmin Fehler #2002

    MySQL Datenbank / Phpmyadmin Fehler #2002: Wie oben schon beschrieben kommt bei mir immer wenn ich versuche auf Phpmyadmin zu verbinden dieser Fehler : #2002 Die Anmeldung am MySQL-Server...