LINUX.ORG.RU
ФорумAdmin

Очень долго происходит запись в таблицу.

 ,


0

2

Добрый день. Столкнулся с такой проблемой:

Имеется mysql 5.5

структура таблици

CREATE TABLE IF NOT EXISTS `ip_tbl` (
  `num_from` int(4) unsigned NOT NULL DEFAULT '0',
  `num_to` int(4) unsigned NOT NULL DEFAULT '0',
  `ip_from` char(15) NOT NULL DEFAULT '',
  `ip_to` char(15) NOT NULL DEFAULT '',
  `dat` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`num_from`)
) ENGINE=InnoDB DEFAULT CHARSET=ascii;

запрос на запись:

INSERT INTO ip_tbl SET ip_from=INET_NTOA(1223424565), ip_to=INET_NTOA(1223424565), num_from=1223424565, num_to=1223424565;

Размер таблици ~150 записей(не тысячь, а просто шт).

Железка очень хорошая

model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz


# free -m
             total       used       free     shared    buffers     cached
Mem:         32233      31992        241          0        129       2794
-/+ buffers/cache:      29067       3165
Swap:        11442       3295       8147

Очень много запросов чтения этой таблици.

Так вот, иногда этот запрос на добавление строки выполняется до 4 минут, а обычно ~10 секунд.

в чем может быть проблема? в какую сторону копать?

★★

будет смешно если окажется функции INET_NTOA генерируют DNS запрос. а так выложи ещё конфиг mysql

anonymous
()
Ответ на: комментарий от resurtm

my.cnf

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock


[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = -10

[mysqld]
default_storage_engine=InnoDB
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
#language        = /usr/share/mysql/english
skip-external-locking
skip-name-resolve
bind-address            = 0.0.0.0


key_buffer                      = 256M
sort_buffer                     = 8M
#record_buffer                  = 2M
join_buffer_size                = 256M
read_rnd_buffer_size            = 8M
myisam_sort_buffer_size         = 64M
myisam_max_sort_file_size       = 512M
bulk_insert_buffer_size         = 32M
tmp_table_size                  = 512M
table_definition_cache          = 512
max_allowed_packet              = 512M
#thread_stack                   = 128K
thread_cache_size               = 8
myisam-recover                  = BACKUP
max_connections                 = 500
table_cache                     = 327545
query_cache_limit               = 1024M
query_cache_size                = 2048M
thread_concurrency              = 8
thread_cache_size               = 16
interactive_timeout             = 600
wait_timeout                    = 600
max_heap_table_size             = 128M
# INNODB
innodb_flush_log_at_trx_commit  = 2
innodb_flush_method             = O_DSYNC
innodb_buffer_pool_size         = 26000M
#transaction-isolation           = READ-COMMITTED
innodb_data_file_path           = ibdata1:20M:autoextend
innodb_file_per_table



server-id               = 1001
log_slave_updates       = 1
log_bin                 = /var/log/mysql/mysql-bin.log
relay_log               = /var/log/mysql/mysql-relay-bin
relay_log_index         = /var/log/mysql/mysql-relay-bin.index
log_error               = /var/log/mysql/mysql.err
master_info_file        = /var/log/mysql/mysql-master.info
binlog_format = STATEMENT
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

expire_logs_days        = 30
max_binlog_size         = 500M
binlog_do_db            = XXXX
binlog_ignore_db        = XXXX
binlog_ignore_db        = XXXX
binlog_ignore_db        = XXXX

#slave_compressed_protocol = 1

slave-skip-errors=all
skip-slave-start = 1
event_scheduler=1



[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]

[isamchk]
key_buffer              = 16M
kam ★★
() автор топика
Ответ на: комментарий от kam

Чаще всего проблемы возникают после долгого отсутствия записи.
т.е. когда пару дней только интенсивное чтение, а вдруг приходит запрос на запись, и тогда возникают проблемы.

kam ★★
() автор топика

А в консоли mysql если запрос выполнить, тоже долго?

pi11 ★★★★★
()
Ответ на: комментарий от kam

выложи выхлоп запросов show process list и show engine innodb status в то время, когда идет этот долгий запрос вставки

goingUp ★★★★★
()
Ответ на: комментарий от vxzvxz

смотрю через atop -d 1
вполне удобно.

kam ★★
() автор топика
Ответ на: комментарий от vxzvxz

Понятно. Если ты переживаешь за диски, проверь (Cpu-wa) в top:

top | grep Cpu

Если значение обычно больше 80ти, проблема с диском, обещает скорый down.
Говорю по опыту.

Haodemon
()
Ответ на: комментарий от Haodemon

при подозрениях на проблемы io дисковой подсистемы нужно анализировать iotop, vmstat, hdparm -tT дисков и заодно глянуть dmesg

vxzvxz ★★★
()
Ответ на: комментарий от Haodemon

WA 99% времени на всех ядрах по нулям.
по этому я сразу сказал, что в диски не упирается...тут что то с мускулем.

IOtop: http://link.goldns.ru/aYX7hZx9pUqR.gif top: http://link.goldns.ru/Xan3vGNfEdbB.gif

kam ★★
() автор топика
Последнее исправление: kam (всего исправлений: 2)

1) поставить символы
2) Воспользоваться poor man's profiler (можно скриптом http://percona.com/get/pt-pmp )

В выхлопе будет видно чем mysql занимается. INET_NTOA не требует обращения к dns

ihanick
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.