CentOS 7은 "yum install"작업 중에 메모리를 할당 할 수 없습니다


11

시도 yum install php56w-mcrypt하고 시스템 이이 오류를 주었다

libmcrypt-2.5.8-13.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
php56w-mcrypt-5.6.5-1.w7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory

나는 수표를 달렸다. free -m

             total       used       free     shared    buffers     cached
Mem:           490        421         68          8          3         42
-/+ buffers/cache:        376        113
Swap:            0          0          0

top

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 9756 mysql     20   0  727588  81556      0 S  0.3 16.2   1:04.61 mysqld
11089 root      20   0       0      0      0 S  0.3  0.0   0:16.25 kworker/0:2
    1 root      20   0  129396   2020    576 S  0.0  0.4   0:05.88 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.16 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S  0.0  0.0   0:01.82 rcu_sched
   11 root      20   0       0      0      0 R  0.0  0.0   0:02.10 rcuos/0
   12 root      rt   0       0      0      0 S  0.0  0.0   0:00.91 watchdog/0
   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd

다른 곳을 확인해야합니다.

DigitalOcean월 $ 5 요금제 인 RAM 512MB와 함께 VPS를 사용 하고 있습니다.

답변:


8

이 문제는 서버에 머신에 490MB의 RAM 만있는 것으로 보이며 421MB를 사용했습니다. 68MB의 여유 공간 만 남겨 두십시오. 그것은 모든 시스템이 작업하기에 많은 메모리가 아닙니다.

출력 결과를 top보면 MySQL (일명 mysqld:)이 범인이라는 것을 알 수 있습니다.

이것이 일시적인 상황이라면 할 수있는 최선의 방법은 단순히 다음과 같이 MySQL을 중지하는 것입니다.

sudo service mysqld stop

그런 다음 MySQL이 중지되면 yum install예상대로 실행할 수 있습니다 .

그러나 또 다른 솔루션은 "MySQL Tuning Primer" 와 같은 스크립트를 사용 하여 서브에서 MySQL 사용 및 구성을 평가하고 그에 따라 조정하는 것입니다. 그 이유는 평범한 바닐라 MySQL이 메모리 호그이기 때문입니다. 그러나“MySQL Tuning Primer”는 설치를 평가하고 조정할 수있는 내용을 알려줍니다. 제한된 리소스로 설정을 만족시킬 수 있도록 메모리 요구 사항을 낮추는 것을 포함합니다. “MySQL Tuning Primer”결과가 가치가 있으려면 최소한 48 시간 동안 MySQL을 적극적으로 실행해야합니다. 이 스크립트를 사용하여 MySQL을 성능 조정하면 LAMP 설정을 세부적으로 조정할 수 있습니다.

또한 Apache를 실행하고 httpd있으므로 Apache (일명 )에 대한 RAM 요구 사항을 낮추어 더 많은 RAM을 확보 할 수 있습니다. 이것은 Apache의 기본 개발 환경을위한 상당히 일반적인 조정 세트이지만 도움이 될 것입니다. 먼저 다음과 같이 좋아하는 명령 행 편집기를 통해 Apache 구성을여십시오. 나는 선호 nano하지만 모든 텍스트 편집기는 좋습니다 :

sudo nano /etc/httpd/conf/httpd.conf 

이제 a가 말하는 줄을 찾아서 Timeout“120”으로 바꾸십시오. 2 분은 합리적인 시간 제한 창입니다.

Timeout 120

비슷하게 찾아서 MaxKeepAliveRequests“24”로 변경하십시오. “살아 남기”연결은 좋지만 설정을 압도하지 마십시오.

MaxKeepAliveRequests 24

찾은 KeepAliveTimeout다음“2”로 설정하십시오. 이것은 사이트의 한 페이지가 얼마나 빨리로드되고 2 초가 좋은 평균인지와 관련이 있습니다.

KeepAliveTimeout 2

이제 XML 구성 지시문을 다음과 같이 설정하십시오 <IfModule mpm_prefork_module>.

<IfModule mpm_prefork_module>
  StartServers           8
  MinSpareServers       16
  MaxSpareServers       32
  ServerLimit           40
  MaxClients            40
  MaxRequestsPerChild 2000
</IfModule>

이것의 열쇠는 ServerLimitMaxClients입니다. 기본적으로 Apache의 설정은 매우 높습니다. 255는 MaxClients믿습니다. 그러나 실제로는 트래픽이 많은 사이트에서도 초당 70-80 개의 연결 만 얻을 수 있습니다 ... 그리고 죽습니다 ... Apache 연결은 상태가 없으므로 벤치 마크는 초당 연결입니다. 따라서 개발 또는 소규모 서버의 경우“40”이 적합합니다.

이제 키 조정이 완료되면 다음과 같이 Apache를 다시 시작하십시오.

sudo service httpd restart

기본 / 통조 된 값보다 합리적인 설정을 갖도록 MySQL과 Apache를 조정하면 서버의 리소스를 확보하고 모든 것을보다 원활하게 실행할 수 있습니다.


17

스왑 파일을 만들 수 있습니다 :

fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

스왑 파일이 만들어지고 응용 프로그램을 설치할 수 있습니다. 스왑 파일을 제거하려면

swapoff -a
rm -f /swapfile

자세한 내용은 아치 위키 를 참조하십시오.


1
좋은 생각. 디스크 공간을 잃는 것 외에 스왑을 해제해야하는 이유는 무엇입니까?
raider33

스왑 설정에 따라 시스템이 50 % 메모리로드에서 시스템을 사용할 수 있습니다. 시스템에 512MB가 있지만 최대 400MB를 사용하는 경우 스왑없이 완벽하게 작동하지만 150MB를 앞뒤로 바꾸는 속도가 느려질 수 있습니다. 그러나 나는 그 일에 잘못되었을 수 있습니다.
pbogut

sudo명령 에 사용 하는 것을 잊지 마십시오
랩터

1
fallocate는 속임수와 작동하지 않을 수 있습니다 ... 용도sudo dd if=/dev/zero of=/swapfile count=512 bs=1MiB
Ray Foss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.