drupal 웹 사이트를 관리하는 명령 줄 PHP 응용 프로그램 인 drush를 사용하고 있습니다. 많은 데이터를 가져 오는 명령을 실행 중이므로 PHP의 메모리 제한에 도달했습니다.
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted ...
수학을 올바르게 수행하면 512MB입니다 (536870912 / 1024 / 1024 = 512). drush가 사용하는 php.ini의 지시문을 변경했습니다.
$> drush status
...
PHP configuration : /etc/php5/cli/php.ini
$> grep memory /etc/php5/cli/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 1024M
그러나 여전히 512MB 제한에 도달하고 있습니다! drush가 실행될 수 있도록 메모리 설정이 512에서 1025MB의 RAM으로 변경된 가상 컴퓨터에서 실행 중입니다.
$> free -m
total used free shared buffers cached
Mem: 1010 578 431 0 14 392
-/+ buffers/cache: 172 837
Swap: 382 0 382
그래서 그것은 약 431MB의 여유 공간이 있다고 말하면서 이제는 vm을 1024까지 올렸습니다. 메모리를 절반으로 사용하여 GUI를 실행하는 것 같지만 VM을 사용할 때 GUI가 어떻게 작동하는지 이해할 수 없습니다. 512MB의 램이있었습니다.
PHP cli가 여전히 512MB 메모리 제한에 도달하는 이유는 무엇입니까? 시스템 메모리 제한에 도달 한 경우 약 431MB 정도 죽지 않아야합니다.이 free
명령 은 어떤 명령을 사용할 수 있습니까?
php.ini
파일 을 가지고 있고 (같은 것을 확인하십시오 /etc/php5/cli
) 잘못된 파일 을 편집 중이거나 파일에 ini_set('memory_limit', '512M');
설정 settings.php
이 포함되어 있습니다.
free
은 모두 실제 메모리입니다. 또한 GUI를 실행하는 데 사용되는 메모리의 절반이 잘못되었습니다. 메모리는 주로 버퍼와 캐시에 사용됩니다. 시스템은 이미 충분한 여유 메모리를 가지고 있기 때문에 여유 공간을 확보하지 않아도되므로 노력이 낭비됩니다.