Если использование памяти сервера Linux велико, вы можете выполнить следующие действия для устранения неполадок:
использоватьfree
Команда может Проверять Системная памятьиспользовать Состояние,Включает общую память、Используемая память、Свободная память и другая информация.
Иногда высокое использование системной памяти может быть вызвано кэшами и буферами. Системы Linux используют нераспределенную память в качестве кэшей и буферов для увеличения скорости доступа к файлам.
# -h Вывод информации в удобочитаемом формате
free -h
# может вернуться
total used free shared buff/cache available
Память: 15Gi 1.5Gi 12Gi 46Mi 1.4Gi 13Gi
обмен: 2.0Gi 0B 2.0Gi
использоватьtop
илиhtop
Команда может Проверять Использование памяти системными процессами,Сортировать по использованию памяти,Найдите процесс, который потребляет много денег.
Команду htop можно установить с помощью yum install htop.
# Команда входит в интерактивный интерфейс htop и взаимодействует с помощью комбинаций клавиш.
htop
# команда top входит в интерфейс, нажмите заглавную букву M Сортировка по использованию памяти от большего к меньшему
top
# может вернуться
top - 08:16:26 up 15 min, 1 user, load average: 0.00, 0.04, 0.05
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 98.8 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2292 root 17 -3 1016716 40844 16904 S 1.3 2.0 0:09.14 YDService
1028 root 20 0 574288 19516 6152 S 0.0 1.0 0:00.23 tuned
1646 root 20 0 987628 19036 5824 S 0.0 0.9 0:00.29 YDLive
1709 root 20 0 622856 14296 3316 S 0.7 0.7 0:05.68 barad_agent
681 polkitd 20 0 614324 11116 4684 S 0.0 0.5 0:00.03 polkitd
1027 root 10 -10 61488 10136 8564 S 0.0 0.5 0:00.00 iscsid
1255 root 20 0 218528 9648 2984 S 0.0 0.5 0:00.07 rsyslogd
1708 root 20 0 164896 9496 2080 S 0.0 0.5 0:00.53 barad_agent
Просмотр системного журнала может помочь определить причину высокого использования памяти.
# journalctlЗаказ Просмотр системного журнал, отфильтруйте ключевые слова («память» или «oom»), чтобы найти связанные журналы
journalctl | grep -i memory
# Журнал ядра содержит информацию об использовании памяти.
grep -i memory /var/log/messages
Если вы подозреваете утечку памяти,Можетиспользоватьvalgrind
руководить Обнаружение утечки памяти。
Из-за особенностей работы valgrind ваша программа может работать медленнее и увеличивать использование памяти вашей программой. Поэтому valgrind обычно используют только на этапах разработки и отладки, а не в производственной среде.
# программировать nginx руководить --leak-check=full Включить полное Обнаружение утечки памяти
valgrind --leak-check=full nginx
Если общая память занимает много, необходимо дополнительно проверить, какой процесс использует общую память.
# Команда просмотра
cat /proc/meminfo | grep -i shmem
# В возвращаемом результате Shmem представляет общий объем общей памяти, используемой в настоящее время в системе.
Shmem: 49004 kB
Просмотр невосстанавливаемой оперативной памяти Размещение,Если эта часть использования памяти высока,Может以использоватьslabtopЗаказ Проверять КакиеslabЗанимает много места。
# Проверять
cat /proc/meminfo | grep -i SUnreclaim
# slabtop Команда используется для отображения информации о «блочном» кэше памяти ядра в реальном времени.
slabtop
Проверьте, настроены ли огромные страницы. Если вывод HugePages_Total не равен 0, это означает, что настроены огромные страницы памяти. Необходимо подтвердить, настроены ли эти большие страницы самим бизнесом или другими вредоносными программами.
# Проверять
cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"
# может вернуться
HugePages_Total: 0
Hugepagesize: 2048 kB
Если раздел подкачки используется слишком сильно, это означает, что система начала использовать диск для расширения памяти, что может повлиять на производительность.
# Закажи один
free
# Закажи два
swapon -s
Может以использоватьpmap
Заказ Анализировать память конкретного процессаиспользовать Состояние,или ВОЗиспользоватьperf
Заказруководить Более подробный анализ производительности。
В реальных приложениях, если процесс занимает слишком много памяти, проблема может заключаться не в самой программе. Например, если mysql занимает слишком много памяти, это может быть вызвано недостаточной оптимизацией операторов SQL в программном коде. Устранение неполадок должно основываться на общей ситуации и учитывать использование ресурсов всей системы.