1

Я сталкиваюсь с высокой загрузкой процессора из-за процесса MySQL. Я погуглил, чтобы избавиться от этой ошибки, но не повезло.

Я нашел решения в Google, как будто они происходят из-за нехватки места на диске, однако на моей машине df -f показано ниже. Его всего 77% заполнено.

[root@mydomain log]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       87G   63G   19G  77% /
/dev/sda1              99M   24M   71M  26% /boot
tmpfs                1014M     0 1014M   0% /dev/shm

Приношу извинения за неудобства. На самом деле я переместил большой /var/log/mysqld.log в /var/log/mysqld.log.bak . Теперь в /var/log/mysqld.log такой ошибки нет, как указано ниже.

[ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
[ERROR] Can't start server: can't create PID file: No space left on device
[ERROR] /usr/libexec/mysqld: Table './db_name/table_name' is marked as crashed and should be repaired

Теперь /var/log/mysqld.log перечисляет:

[root@mydomain log]# tail -5 /var/log/mysqld.log

130724 08:33:53  mysqld started
130724  8:33:54  InnoDB: Started; log sequence number 0 94462
130724  8:33:54 [Note] /usr/libexec/mysqld: ready for connections.

Вывод команды TOP .

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7831 mysql     18   0  179m  64m 4492 S 95.6  3.2   1168:01 mysqld
12231 root      16   0  2592 1328  900 R  1.8  0.1   0:00.13 top
  136 root      10  -5     0    0    0 S  1.5  0.0  94:19.68 kswapd0

вывод команды df -i :

[root@mydomain log]# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/VolGroup00-LogVol00
                     23298048 1235574 22062474    6% /
/dev/sda1              26104      43   26061    1% /boot
tmpfs                 224005       1  224004    1% /dev/shm

Может кто-нибудь, пожалуйста, помогите мне в этом ??

2 ответа2

4

Чтобы отобразить фактически обработанные запросы, войдите в MySQL и введите следующую команду:

show processlist

Если запросы не выполняются, вы можете использовать следующие команды, чтобы отследить, что делает сервер:

ltrace -p PID   # trace library calls
strace -p PID   # trace system calls
1

Ваша система (как и большинство), вероятно, использует tmpfs (временную файловую систему) для /var/run (посмотрите путь к ошибке).

Попробуйте команду df без псевдонимов:

\df -h

(включая обратную косую черту). Я установил псевдоним своего собственного df, чтобы не показывать вещи tmpfs, сохраняя вывод относительно чистым, но вы должны увидеть полный вывод. Вы также можете увидеть, какие монтирования активны, посмотрев на /proc/mounts, но он не покажет использования и свободного места.

Из моей системы:

xenon-lornix:~> \df -h
Filesystem                 Size  Used Avail Use% Mounted on
rootfs                     451G   23G  406G   6% /
udev                        10M     0   10M   0% /dev
tmpfs                      372M  748K  371M   1% /run
/dev/disk/by-label/xenon   451G   23G  406G   6% /
tmpfs                      5.0M     0  5.0M   0% /run/lock
tmpfs                      2.3G  712K  2.3G   1% /run/shm

Но ждать! ты говоришь ... там нет / вар / беги ... Вы правы, давайте посмотрим, где находится / var / run в структуре файла:

xenon-lornix:~> ls -l /var/
total 40,960
# extra stuff deleted for clarity
drwxrwxrwt  5 root root  4,096 Jul 24 16:02 tmp/
lrwxrwxrwx  1 root root      9 Jul 18 18:44 lock -> /run/lock/
lrwxrwxrwx  1 root root      4 Jul 18 18:44 run -> /run/

И есть ответ: /var/run - это символическая ссылка на /run, которая находится в файловой системе 372Meg tmpfs.

tmpfs                      372M  748K  371M   1% /run

Загляните внутрь / бегите, я думаю, в нем есть мусор, который съедает пространство. Нет, я не буду рекомендовать менять размер, это не решит проблему, просто наложите на него пластырь. Выясните, что заполняет / запускает... этот размер по умолчанию работает на миллионах других машин, так что же происходит с вашей?

Если вы не можете понять, что потребляет пространство, вы можете увеличить / запустить , но помните, что tmpfs разделяет оперативную память с процессами. Это быстро, временно, но может повлиять на запущенные процессы, если оно слишком велико. В настоящее время (по умолчанию) установлено значение 10% от основной памяти (физической памяти), это максимальный размер. Более подробную информацию можно найти в / etc / default / tmpfs и на man-странице tmpfs (5). (Система Debian, другие версии могут отличаться, сначала проверьте man-страницу tmpfs (5).)

Из-за использования tmpfs содержимое не сохраняется после перезагрузки, что означает, что перезагрузка этого сервера немедленно решит проблему. Но если вы не выясните, почему это произошло, это может случиться снова. Узнайте, что наполняет / запускает (/ var / run).

/var/lock (/run/lock) и /var/shm (/run/shm) являются отдельными монтируемыми объектами и не связаны с размером /run (/var/run).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .