mysql 이 cpu 를 꾸준히 먹습니다.

망치의 이미지

혹시나 refresh 공격인가 싶어서 로그를 살펴봐도 그건 아닌데, top 으로 확인할때 cpu 를 mysql 이 계속 잡아먹고 있습니다..

누군가 의도적으로 공격을 하고 있는것같긴 한데 사이트의 어느부분에서 어떤 쿼리로 DB 를 계속 빡시게 돌게 하고 있는건지 파악이 힘듭니다..

어떻게 추적해야 하는건가요?;; :? :?

망치의 이미지

mysql 에 던져진 최근 쿼리중 cpu 타임을 오래 잡아먹은 걸 추려낼 수 있는 방법이 있으면 추적이 간단해질것같은데.. 방법이 있나요..?

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

평양선봉의 이미지

로그를 기록되게 변경해서 로그 분석을 해보세요..

----
웹페이지 : http://bzpalm.net/

coalash의 이미지

slow query 를 로그 남기는 방법이 있겠구요.

http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html

좀 오래된 툴이지만, mytop 으로 실시간 감시를 해 보는 방법도.

http://jeremy.zawodny.com/mysql/mytop/

coalash의 이미지

slow query 갯수가 너무 많아 로그 읽기가 힘들다면?

mysql_slow_log_parser
http://retards.org/projects/mysql/

망치의 이미지

감사합니다.

slow-query 를 기록하게 설정해두고 DB 를 재시작하고 로그가 쌓이길 기다리고 있습니다. 그리고.. mytop 은 설치중 문제가 생겼습니다..;

[root@*** mytop-1.4]# perl Makefile.PL


Checking if your kit is complete...
Looks good
Warning: prerequisite DBD::mysql 1 not found.
Warning: prerequisite DBI 1.13 not found.
Warning: prerequisite Term::ReadKey 2.1 not found.
Writing Makefile for mytop


[root@*** mytop-1.4]# make


cp mytop blib/script/mytop
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/mytop
Manifying blib/man1/mytop.1


[root@*** mytop-1.4]# make test


PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
1..1
ok 1


[root@*** mytop-1.4]# make install


Installing /usr/share/man/man1/mytop.1
Installing /usr/bin/mytop
Writing /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/mytop/.packlist
Appending installation info to /usr/lib/perl5/5.8.0/i386-linux-thread-multi/perllocal.pod
[root@*** mytop-1.4]# mytop
Can't locate DBI.pm in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 .) at /usr/bin/mytop line 20.
BEGIN failed--compilation aborted at /usr/bin/mytop line 20.

* DBI and DBD::mysql
* Term::ReadKey from CPAN

요게 없어서 생기는 문제같습니다. 따로 설치해야하는군요.. slow-query 로그 쌓이는거 보고 mytop 도 실행되게 만들어서 좀 봐야ㅤㄱㅖㅆ습니다.

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

망치의 이미지

/usr/local/mysql/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/home/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock --log-slow-queries=/var/log/mysql_slow.log

mysql 실행시 위와같이 슬로우쿼리 옵션을 추가해 주고 long query time 을 1 로 지정해주었는데, 이상하게 슬로우 쿼리 로그가 남질 않습니다. 직접 1초가 넘게 걸리는 쿼리를 만들어서 날려보기도 했는데 안남는군요.. 뭘 빠뜨린건가요? :? :?

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

평양선봉의 이미지

mysqladmin -i5 status 명령으로 5초 간격으로 모니터링을 해보세요.

슬로우 쿼리 문제가 아닐수도 있습니다.

아니면 --log 옵션을 주어서 모든 쿼리문을 로그로 남긴후 분석해보시길 바랍니다. 30분~1시간정도면 충분할듯 하네요.. 그이상은 로그파일의 용량이 비대해지기 때문에... 8)

----
웹페이지 : http://bzpalm.net/

망치의 이미지

Uptime: 15561  Threads: 2  Questions: 1310023  Slow queries: 23  Opens: 687  Flush tables: 1  Open tables: 64  Queries per second avg: 84.186
Uptime: 15566  Threads: 1  Questions: 1310146  Slow queries: 23  Opens: 687  Flush tables: 1  Open tables: 64  Queries per second avg: 84.167
Uptime: 15571  Threads: 2  Questions: 1310566  Slow queries: 23  Opens: 687  Flush tables: 1  Open tables: 64  Queries per second avg: 84.167
Uptime: 15576  Threads: 2  Questions: 1310781  Slow queries: 23  Opens: 687  Flush tables: 1  Open tables: 64  Queries per second avg: 84.154
Uptime: 15581  Threads: 1  Questions: 1311148  Slow queries: 23  Opens: 687  Flush tables: 1  Open tables: 64  Queries per second avg: 84.150
U

status 에선 슬로우 쿼리가 분명히 표시가 되는데.. 희한하네요. 왜 슬로쿼리 로그엔 안남을까요 ㅡㅡ;;;

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

평양선봉의 이미지

/usr/local/mysq/var 디렉토리에 슬로우 쿼리 로그가 남지 않았나 싶습니다.. 8)

----
웹페이지 : http://bzpalm.net/

망치의 이미지

평양선봉 wrote:
/usr/local/mysq/var 디렉토리에 슬로우 쿼리 로그가 남지 않았나 싶습니다.. 8)

요건 아니구요. 실행 스크립트에 옵션으로 넣지않고 바로 my.cnf 에 넣었더니 로그가 기록되기 시작했습니다.

# slow query log
log_slow_queries=/var/log/mysql_slow.log

그런데 query cache size 를 my.cnf 내에서 지정해주려면 어떻게 넣어줘야 하나요? 위에 슬로쿼리로그처럼 그냥 써 넣었더니 에러가 나더군요.. 대쉬와 밑줄의 차이인가 싶어서 바꿔봐도 똑같은 에러가 나구요. 결국 직접 mysql 실행해서 지정해주는데.. my.cnf 에서 지정하려면 어떻게 써줘야 하는지 궁금합니다.

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

평양선봉의 이미지

my.cnf 파일에..

set-variable = query_cache_size = xxM

의 형식으로 작성해 보세요..

mysql은 볼수록 방대하고 깊네요.. 8)

----
웹페이지 : http://bzpalm.net/

망치의 이미지

사이트내에서 그누보드3와 제로보드를 같이 쓰고 있는데, 제로보드쪽엔 아직 게시물이 많지 않고 그누보드3쪽에 게시물이 28만건정도 있는데.. 여기서 슬로우 쿼리가 많이 생기네요..

마지막페이지나 좀 오래된 페이지로 넘어갈경우 글 목록을 표시하는 쿼리만 4~6초씩 걸리네요.. 그동안 mysql 99% 먹어버리구요 ㅡ.,ㅡ; 딱히 누가 공격한것같진 않고.. 좀 오래된 페이지에서 글 보느라 왔다갔다 한것같은데.. 그 리소스 먹는게 거의 테러수준으로 보인것같습니다..

그누보드는 이래저래 많은사람이 사용하는 사이트에선 어울리질 않는것같습니다.. 글이 몰릴경우 글 번호가 없는 글이 생긴다거나.. 그렇게 번호 없는 글이 생겼을경우 답글이 이상한곳에 달린다거나 하는 문제도 있더군요..

뭐.. 게시물 수 늘어나면 어떤 게시판이건 느려지는건 마찬가지겠지만 -_-;..

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

평양선봉의 이미지

회사에서 서비스해주는 쇼핑몰 사이트가 JSP+MySQL 이었는데..
어느날 계속 MySQL의 쓰레드가 80여개 이상으로 생기면서 죽는 현상이 있었습니다.

슬로우 쿼리 문제라 생각했는데.. 슬로우 쿼리는 아니고..
mysql 셋팅에서 wait_time 과 thread_cach_size 옵션을 적용해주니 문제가 해결 되었습니다.

야메... :lol:

한 table에 28만건이면.. 어마하네요..
글쓰기 금지하고, 새 테이블로 만드셔야 할거 같습니다..

----
웹페이지 : http://bzpalm.net/

망치의 이미지

일단 게시판을 리셋하고 새로운 테이블에서 새 게시판이 시작됐습니다.

게시물이 늘어나면 또 속도가 떨어질텐데.. 뭔가 대안이 필요합니다. ㅡ.,ㅡ; 게시물이 늘어나도 속도가 심하게 느려지지 않을 비법.. 같은게 있을까요!!! -_-;;

새로 만들고 싶은 생각도 있지만 DB에 관해 아는게 없다보니 기존 게시판 보다 빠르게 만들 자신역시 없습니다 --;

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.