Tables MySQL corrompues

Discussion dans 'Administration d'un site Web' créé par Recif, 29 Mai 2011.

  1. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Salut,

    J'ai un petit souci sur mon serveur : j'ai des tables qui se corromptent presque immédiatement après les avoir réparée... Avez vous une idée de ce qui peut se passer? Qu'est ce qui peut provoquer ce genre de phénomène?

    Merci
     
  2. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 119
    J'aime reçus:
    1
    des addslashes oubliés ? et donc des caractères foireux dans les champs peut être ? enfin je sais pas si ca peut corrompre ainsi mais c'est à vérifier en premier peut etre ?
     
  3. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Nan, en fait ca fait 10 mois que ces tables tournent sans pb, et les champs sont de type int (11)...
     
  4. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tu les répares comment ? Avec PHPMyAdmin ou en SSH ?
     
  5. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    PHPMyAdmin et maintenant j'ai fait un script php avec mysql_query("repair table sessions "); par exemple
     
  6. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Es-tu sûr que ta table est réellement corrompu ?
    Normalement les tables sessions passent leur temps à enregistrer/supprimer ce qui fait des pertes.

    Tu peux tenter de passer ta table en innoDB, sinon tu peux essayer cette méthode de réparation:
    -https://admin-serv.net/blog/622/table-phpbb_posts-is-marked-as-crashed-and-last-automatic-repair-failed/
    Mais je pense que c'est un "faux" problème.
     
  7. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Voici le genre de logs dans le syslog :

    Code:
    May 29 13:34:00 de11 mysqld[18079]: 110529 13:34:00 [ERROR] /usr/sbin/mysqld: Table './monsite/sessions' is marked as crashed and should be repaired
    
    Sous PHPMyadmin j'ai la table marqué en "utilisé"

    Je ne pense pas qu'il y ait un problème de réparation, car juste après avoir été réparée la table est ok et refonctionne... :(
     
  8. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tout refonctionne mais pas longtemps donc pour moi il y a un problème :p

    Tu peux tenter de passer la table en innoDB, ça pourrait peut-être fixé le problème, mais il faudrait trouver la cause de la corruption de cette table.
     
  9. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Et la commande REPAIR tente une réparation sur une base de données activée.
    myisamchk fait une vraie réparation sur les fichiers en eux mêmes.
     
  10. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Donc tu penses que, même après un repair et que la table se comporte bien (jusqu'au prochain crash...) elle n'est pas efficace?...
     
  11. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Je pense qu'il y a un problème.
    Ton automatic repair par PHPMyAdmin ne fonctionne qu'un certain temps. Tu peux tenter en SSH, ça fera la même chose mais peut-être en mieux.
     
  12. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Moi je pense que ça vient d'autre chose, là on essaye de réparer mais je pense qu'il faudrait que je trouve d'où vient le problème. Toutes les tables de tous les sites contenant une table "sessions" ont cette maladie...
     
  13. Robinson
    Robinson WRInaute passionné
    Inscrit:
    26 Octobre 2005
    Messages:
    1 636
    J'aime reçus:
    0
    Tu stoppes mysql, tu supprimes ta BDD, tu la réinstalles, tu relances mysql.
     
  14. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Je ne pense pas que ce soit la solution. Il y a plus de 400 bases. Et le problème apparait sur une bonnde 20aine... Donc ça ne doit pas être un problème sur une base en particulier...
     
  15. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Petite info supplémentaire, j'ai attendu qu'une table soit sorrompue pour essayer la méthode:

    Code:
     mysqlcheck mabase --auto-repair
    Mais il passe sur la ptable notée corrompue et ne la voit pas corrompue... Il la voit "ok"... Bizarre...
     
  16. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Autre info : les processus apache sont souvent plus sollicités que MySQL quand je fais un "top". Hors d'habitude c'est toujours MySQL qui est en haut...
     
  17. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Voici la réponse que j'ai de l'hébergeur :

    Le graphe mémoire :

    [​IMG]
     
  18. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Une autre réponse de l'hébergeur :

    Comment puis-je détecter et identifier les ips qui attaquent?...
     
  19. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    et le résultat de la commande

    Code:
    netstat -tapun | grep :80 | awk '{ print $5}' | cut -d : -f 1 | sort | uniq -c | sort -g | tail -n 100
    [​IMG]
     
  20. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Si MySQL te fait un out of memory (OOM), il suffit de réduire sa charge mémoire. Je ne pense pas que ça réellement de là pour l'histoire de corruption.
    Pour l'histoire de trop de connexion, voir ton autre topic, mais je ne pense pas que la source du problème soit là: si tu as 10 images sur une page et que tu n'as pas de keepalive, j'ouvrirais 10 connexions pour les télécharger.
     
  21. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    J'ai banni la totalité de la Chine et de la Russie et mes graphes semblent redevenir normaux, et plus de corruption de table ...
     
  22. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Tu te faisais "des dos" ? :D
     
  23. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    J'ai l'impression, oui... :(
     
  24. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    si tu supprimes ta connexion paypal, tu n'auras plus de problème de corruption :mrgreen: :arrow:
     
  25. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Ouais enfin MySQL qui te fait des OOM suite à un (d?)Dos ça reste pas génial.
    A noter qu'Apache a un mod nommé evasive qui te permet de ne pas faire de "grossièreté" (bannir un pays c'est mal car un résident français peut vouloir surfer de là bas).
    (grossièreté: à ne pas prendre mal, je banni moi même tout AFRINIC de la plupart de mes serveurs (et je suis conscients que c'est mal)).
     
  26. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Oui, je suis à 2 doigts de le faire aussi en ce qui conerne afrinic!

    Pour ce qui est de OOM et MySQL, y a t'il une config particulière à mettre en place?
     
  27. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Il faudrait regarder en fonction de la RAM dont tu disposes et de la taille de tes bases. C'est pas particulier, c'est "ajusté". Après si tu as 1Go de RAM et 50Go de data SQL, là tu auras souvent ça :p
     
  28. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    J'ai plus de 3480 bases et 14Go de RAM d'une taille totale de 2.7Go gzippée
     
  29. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    oui, mais en fait c'est la taille des bases appelées qu'il faut voir : les index bien structurés des tables ont, dans ce cas une grande importance
     
  30. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    J'ai de nouveau les processus apache qui s'emballent... Comment puis-je voir qui ou quel site consomme ces ressources?

    [​IMG]
     
  31. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    t'es sur qu'il est bien configuré ton apache ? Envoie nous la config ^^
     
  32. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    config supprimée pour cause de sécurité ;-)
     
  33. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tu as 3480 bases et autant de sites ?
    Ca commence à faire très gros pour n'importe quel serveur.
    Je trouve la consommation de ton Apache plutôt importante mais bon, si tu as plus de 3000 sites et que certains sont bien visités c'est "normal".
    Tu pourrais faire un strace sur l'un des process Apache pour voir ce qu'il consomme (et ainsi avoir son utilisation) mais à mon avis tu arrives au bout de ce qu'il peut tenir.
     
  34. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 226
    J'aime reçus:
    0
    Ton MaxClients est très faible (10)
    Par contre ton MaxKeepAliveRequests est trop grand (1000)
     
  35. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Non, j'ai une 40aine de sites dessus. Plusieurs d'entre eux nécessitent parfois plus de 1000 bases de données, mais les principaux non.

    Comment utiliser "strace"?...
     
  36. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Quelles seraient les valeurs correctes?...
     
  37. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Je crois que j'ai trouvé pour strace...

    strace -p 5600

    Code:
    fstat(98, {st_mode=S_IFREG|0666, st_size=2015, ...}) = 0
    lseek(98, 0, SEEK_CUR)                  = 0
    read(98, "<?php if (!defined(\'IN_PHPBB\')) "..., 8192) = 2015
    read(98, "", 8192)                      = 0
    read(98, "", 8192)                      = 0
    close(98)                               = 0
    rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
    poll([{fd=97, events=POLLIN|POLLPRI}], 1, 0) = 0
    setsockopt(97, SOL_SOCKET, SO_SNDTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
    write(97, "\1\0\0\0\1", 5)              = 5
    shutdown(97, 2 /* send and receive */)  = 0
    close(97)                               = 0
    rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0
    writev(96, [{"HTTP/1.1 200 OK\r\nDate: Tue, 31 M"..., 276}, {"<!DOCTYPE html PUBLIC \"-//W3C//D"..., 13509}], 2) = 11680
    poll([{fd=96, events=POLLOUT, revents=POLLOUT}], 1, 30000) = 1
    writev(96, [{"m.\r\n\tThis not only gives respect"..., 2105}], 1) = 2105
    chdir("/")                              = 0
    umask(022)                              = 022
    setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
    write(56, "109.230.251.74 - - [31/May/2011:"..., 205) = 205
    times({tms_utime=415, tms_stime=42, tms_cutime=0, tms_cstime=0}) = 76815157
    shutdown(96, 1 /* send */)              = 0
    poll([{fd=96, events=POLLIN, revents=POLLIN|POLLHUP}], 1, 2000) = 1
    read(96, "", 512)                       = 0
    close(96)                               = 0
    read(4, 0x7fffd7005c77, 1)              = -1 EAGAIN (Resource temporarily unavailable)
    accept(3, {sa_family=AF_INET, sin_port=htons(42667), sin_addr=inet_addr("127.0.0.1")}, [17179869200]) = 96
    getsockname(96, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("127.0.0.1")}, [17179869200]) = 0
    fcntl(96, F_GETFL)                      = 0x2 (flags O_RDWR)
    fcntl(96, F_SETFL, O_RDWR|O_NONBLOCK)   = 0
    read(96, "GET / HTTP/1.0\r\nUser-Agent: Apac"..., 8000) = 66
    lseek(94, 0, SEEK_SET)                  = 0
    read(94, "\1\0\0\2\0\0\3\0\0\4\0\0j\232)k\232)\5\0\0\6\0\0G\256\10"..., 4096) = 4096
    lseek(94, 4096, SEEK_SET)               = 4096
    lseek(94, 4096, SEEK_SET)               = 4096
    lseek(94, 3411968, SEEK_SET)            = 3411968
    read(94, "G\tXBX\255\10Y\255\10b\255\10\273iEZ\255\10[\255\10_\255"..., 4096) = 4096
    lseek(94, 14946304, SEEK_SET)           = 14946304
    read(94, "\2&\266\2&\267\2&\256\2&/\205A\262\2&\263\2&\257\2&\260"..., 4096) = 4096
    lseek(94, 15753216, SEEK_SET)           = 15753216
    read(94, "\311f\4qSK\2\20(\3\20(\3PK\4\20(\7\20(\3PK\3PK\5\20(\3"..., 4096) = 4096
    lseek(94, 15912960, SEEK_SET)           = 15912960
    read(94, "\2x(\3x(\4x(\5x(\204\224J\316\0\4uvKr\1\4\204\224JP;j\6"..., 4096) = 4096
    lseek(94, 16121856, SEEK_SET)           = 16121856
    read(94, "\232\"(\365RH\r\5\4\31!J\372\5\4\312TKWyL\365RH\6\0)\7"..., 4096) = 4096
    stat("/home/www/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    open("/.htaccess", O_RDONLY)            = -1 ENOENT (No such file or directory)
    open("/home/.htaccess", O_RDONLY)       = -1 ENOENT (No such file or directory)
    open("/home/www/.htaccess", O_RDONLY)   = -1 ENOENT (No such file or directory)
    stat("/home/www/index.html", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/index.html", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    stat("/home/www/index.cgi", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/index.cgi", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    stat("/home/www/index.pl", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/index.pl", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    stat("/home/www/index.php", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/index.php", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    stat("/home/www/index.xhtml", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/index.xhtml", 0x7fffd70058d0) = -1 ENOENT (No such file or directory)
    open("/home/www/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|0x80000) = 97
    fstat(97, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    stat("/home/www/HEADER.html", 0x7fffd7003610) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/HEADER.html", 0x7fffd7003610) = -1 ENOENT (No such file or directory)
    getdents(97, /* 2 entries */, 4096)     = 48
    lstat("/home/www/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    getdents(97, /* 0 entries */, 4096)     = 0
    close(97)                               = 0
    stat("/home/www/README.html", 0x7fffd70035e0) = -1 ENOENT (No such file or directory)
    lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    lstat("/home/www/README.html", 0x7fffd70035e0) = -1 ENOENT (No such file or directory)
    writev(96, [{"HTTP/1.1 200 OK\r\nDate: Tue, 31 M"..., 190}, {"<!DOCTYPE HTML PUBLIC \"-//W3C//D"..., 455}], 2) = 645
    times({tms_utime=416, tms_stime=42, tms_cutime=0, tms_cstime=0}) = 76815538
    shutdown(96, 1 /* send */)              = -1 ENOTCONN (Transport endpoint is not connected)
    close(96)                               = 0
    read(4, "!", 1)                         = 1
    close(95)                               = 0
    close(94)                               = 0
    munmap(0x2ae4c5e39000, 4096)            = 0
    close(5)                                = 0
    close(4)                                = 0
    exit_group(0)                           = ?
    Process 5620 detached
    
    J'y comprends pas grand chose, mais au passage "/home/www" n'existe pas sur mon serveur...
     
  38. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    MaxClients tu peux le monter
    MaxKeepAliveRequests ça dépends du nombre de visiteurs en même temps que tu as mais 100 est normalement bon.
     
  39. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Si ton /home/www/ n'existe pas, pourquoi tu as :
    DocumentRoot "/home/www"

    Dans ton apache.conf ?
     
  40. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    aucune idée...
     
  41. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tu peux le créer et mettre un index.html vide dedans (ou plutôt mets le en "dévidoir" ailleurs) ça évitera des scans incéssants.
     
  42. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, j'ai changé à /var/www et mis un index.html vide à la racine...
     
  43. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Comment faire un script .sh qui détecte une certaine valeur du load server et redémarre apache? J'essaye de trouver une solution paliative en attendant de traiter la source du problème...
    Merci
     
  44. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Sur :
    12:36:38 up 41 days, 14:54, 2 users, load average: 0.28, 0.20, 0.16
    Si tu veux récupérer le 1.28:
    uptime | cut -d "," -f 5| cut -d " " -f 2
    Si tu veux récupérer le "1":
    uptime | cut -d "," -f 5| cut -d " " -f 2| cut -d "." -f 1

    Après il te suffit de faire un petit IF > 2 alors on restart et tu mets ça en cron.
    Je te conseillerais toutefois de te baser sur le serveur status plutôt que sur le load complet car ça peut venir d'autre chose un load élevé (backup en cours ou autre).
     
  45. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Merci Julia41.

    J'ai fais ça :

    Code:
    #!/bin/bash
     loadavg=`uptime | awk '{print $10}'`
     thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
     if [ "$thisloadavg" -ge "40" ]; then
     /etc/init.d/apache2 restart
     
    else
     echo "";
     fi
     
  46. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Ouais enfin si ton Apache fait monter à plus de 40, c'est quand même énorme :p
    Attention aussi car ça peut ne pas être lié à ton apache à certains moment.
     
  47. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ah, 40? Non, ça c'est dans ses bons jours... :D C'est plutôt 110/120 !
    Je suis en train de bannir range ip après range ip (Us, Ukraine, Russie, Chine,...) et ça a l'air de lui plaire, il fait de moins en moins de pics... C'est peut être tout de même une attaque finalement...
     
  48. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    2 petites questions à propos de ça d'ailleurs:

    - Y a t-il un moyen plus rapide que de faire des "iptables -A INPUT -s 217.199.224.0/20 -j DROP"?
    - Est ce normal qu'une ip compris dans une fourchette bannie par ce moyen apparaisse lorsque je fais un "netstat"?...
     
  49. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tu peux faire un ptit script
    Code:
    #!/bin/bash
    iptables -A INPUT -s $1 -j DROP
    
    ./script.sh 1.1.1.1

    [/quote]
    - Est ce normal qu'une ip compris dans une fourchette bannie par ce moyen apparaisse lorsque je fais un "netstat"?...[/quote]
    Si la connexion n'a pas été coupé (genre apache non redémarré), la connexion reste établie. Oui c'est normal.

    As-tu essayé le mod_evasive d'apache ?
     
  50. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, merci.
    Je viens d'installer le mod_evasive car ça fait 10 jours que je lutte et je n'arrive pas à m'en sortir... Le serveur s'emballe de plus en plus souvent maintenant, je n'arrive plus à gérer. J'ai mis le mod_evasive avec :

    Code:
    <IfModule mod_evasive20.c>
    DOSHashTableSize 3097
    DOSPageCount 3
    DOSSiteCount 50
    DOSPageInterval 2
    DOSSiteInterval 2
    DOSBlockingPeriod 300
    DOSEmailNotify "admin@majorxtrem.be"
    DOSLogDir "/var/log/mod_evasive/"
    #DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP"
    DOSSystemCommand "/bin/echo %s >> /var/log/mod_evasive/dos_evasive.log && /bin/date >> /var/log/mod_evasive/dos_evasive.log"
    DOSWhiteList 127.0.0.1
    DOSWhitelist 66.249.65.*
    DOSWhitelist 66.249.66.*
    DOSWhitelist 66.249.67.*
    </IfModule>
    J'ai déjà pleins d'adresses bloquées, mais la plupart sont des ips françaises, docn je me demande si il ne me bloque pas de mauvaises ips... :(
     
  51. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Le mod_evasive ne sert à rien, le serveur s'emballe toujours comme avant...
     
  52. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Lorsque je fais un ps -auxwf J'ai une centaine de lignes "/usr/sbin/apache2 -k start"
     
  53. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Tu as des trucs dans:
    /var/log/mod_evasive/dos_evasive.log
    ?

    Ton mod evasive est un peu configuré en mod "j'ai copié ce que j'ai vu" :p

    Pour ton "centaine de ligne apache" c'est normal c'est que ça tourne.
     
  54. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Bonjour Julia41,

    Oui, le dos_evasive était pleins d'ips. Je l'ai retiré mais à force de bannier des ranges d'adresses étrangères (pays de l'est, afrique, US, russier, etc.), l'attaque semble s'être calmée... Je n'ai plus que quelques pointes à 20 de temps à autre, et le graphe mémoire sous munin est redevenu normal... Merci en tout cas pour toutes tes réponses!
     
  55. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Justement le evasive "devrait" (bon, je suis pas fan de ce mod mais il fait quand même un peu de ménage) t'éviter d'avoir à bannir des pays entier.
    20 reste trop élevé, sans un serveur un peu plus puissant tu n'arriveras pas à encaisser l'attaque facilement je pense.
     
  56. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    C'est un bi xeon quadcore... C'est bizarre parce que lorsqu'il est à 20 je ne note aucun ralentissement sur les sites...
     
  57. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Le load n'indique pas que le processeur, c'est "l'ensemble" du serveur (et c'est pour ça que linux rocks).

    En tout cas je pense que tu aurais du travail à faire, tu dois avoir un point bloquant sur ton serveur/site
     
  58. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Oui, je vais étudier tout ça...
     
Chargement...
Similar Threads - Tables MySQL corrompues Forum Date
Utiliser des INT ou des VARCHAR pour les relations entre les tables MySQL ? Développement d'un site Web ou d'une appli mobile 9 Avril 2015
SUM de 2 champs identiques dans deux tables mysql différentes Administration d'un site Web 9 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base? Développement d'un site Web ou d'une appli mobile 11 Juillet 2013
Mysql - un Group by non trié sur plusieurs tables ... Développement d'un site Web ou d'une appli mobile 13 Mars 2013
remplir un base MySQL automatiquement à partir d'excel et dans différentes tables Développement d'un site Web ou d'une appli mobile 23 Septembre 2011
[MySQL] Requête SELECT entre 3 tables liées Développement d'un site Web ou d'une appli mobile 10 Août 2011
Mysql : select sur plusieurs tables? Développement d'un site Web ou d'une appli mobile 20 Juillet 2011
Mysql sum sur 2 tables Développement d'un site Web ou d'une appli mobile 6 Mai 2011
[PHP/SQL] Associer plusieurs SELECT de tables MySQL Développement d'un site Web ou d'une appli mobile 27 Novembre 2010
[Résolu] Eclater une table Mysql en plusieurs tables Développement d'un site Web ou d'une appli mobile 20 Mai 2010
[MySQL] : select de 2 tables et mysql_fetch_assoc Développement d'un site Web ou d'une appli mobile 22 Septembre 2009
Fusionner deux tables mysql Développement d'un site Web ou d'une appli mobile 30 Juin 2009
Taille des tables MySQL Développement d'un site Web ou d'une appli mobile 15 Septembre 2008
[Résolu] MySQL lier 2 tables Développement d'un site Web ou d'une appli mobile 16 Mai 2008
MySQL - Sensibilité à la casse sur le nom des tables Développement d'un site Web ou d'une appli mobile 22 Avril 2008
[php / mysql] Une grosse table ou plusieurs petites tables ? Développement d'un site Web ou d'une appli mobile 8 Avril 2008
MYSQL - Intérroger plusieurs tables en même temps ? Administration d'un site Web 24 Décembre 2007
[Mysql] Recherche FULL-TEXT sur plusieurs tables Administration d'un site Web 19 Décembre 2007
Moteur de recherches sur 3 tables mysql Développement d'un site Web ou d'une appli mobile 19 Décembre 2005