APCu 설치/구성 런타임 구성

이 함수의 동작은 php.ini의 설정에 영향을 받습니다.

기본 APCu 설정은 많은 설치에 적합하지만 신중한 사용자는 다음 매개변수 조정을 고려해야 합니다.

APCu 구성에는 한 가지 결정 사항이 있습니다. APCu에 할당할 메모리 양입니다. 이것을 제어하는 ​​ini 지시자는 apc.shm_size입니다. 아래에서 이에 대한 섹션을 주의 깊게 읽으십시오.

서버가 실행되면 확장 프로그램과 함께 번들로 제공되는 apc.php 스크립트를 docroot의 어딘가에 복사하고 APCu의 내부 작동에 대한 자세한 분석을 제공하므로 브라우저에서 확인해야 합니다. GD가 PHP에서 활성화되면 흥미로운 그래프도 표시됩니다. APCu가 작동하는 경우 Cache full count 수(왼쪽)는 캐시가 최대 용량에 도달한 횟수를 표시하고 마지막 apc.ttl 초 동안 액세스되지 않은 항목을 강제로 정리해야 했습니다. 이 수는 잘 구성된 캐시에서 최소화됩니다. 캐시가 지속적으로 채워져 강제로 해제되는 경우 결과적으로 발생하는 변동은 스크립트 성능에 부정적인 영향을 미칩니다. 이 수를 최소화하는 가장 쉬운 방법은 APCu에 더 많은 메모리를 할당하는 것입니다.

APCu가 mmap 지원(메모리 매핑)으로 컴파일되면 APCu가 여러 메모리 세그먼트를 사용하는 SHM(SysV Shared Memory) 지원으로 빌드될 때와 달리 하나의 메모리 세그먼트만 사용합니다. MMAP에는 SHM이 /proc/sys/kernel/shmmax에 있는 것처럼 최대 제한이 없습니다. 일반적으로 MMAP 지원은 웹 서버가 다시 시작될 때 메모리를 더 빨리 회수하고 시작 시 메모리 할당 영향을 줄이므로 권장됩니다.

APCu configuration options

Name Default Changeable Changelog
apc.enabled "1" PHP_INI_SYSTEM  
apc.shm_segments "1" PHP_INI_SYSTEM  
apc.shm_size "32M" PHP_INI_SYSTEM  
apc.entries_hint "4096" PHP_INI_SYSTEM  
apc.ttl "0" PHP_INI_SYSTEM  
apc.gc_ttl "3600" PHP_INI_SYSTEM  
apc.mmap_file_mask NULL PHP_INI_SYSTEM  
apc.slam_defense "1" PHP_INI_SYSTEM  
apc.enable_cli "0" PHP_INI_SYSTEM  
apc.use_request_time "0" PHP_INI_ALL Prior to APCu 5.1.19, the default was "1".
apc.serializer "php" PHP_INI_SYSTEM Prior to APCu 5.1.15, the default was "default".
apc.coredump_unmap "0" PHP_INI_SYSTEM  
apc.preload_path NULL PHP_INI_SYSTEM  

PHP_INI_* 모드에 대한 자세한 내용과 정의는 구성 설정을 설정할 수 있는 위치를 참조하세요. 다음은 구성 지시문에 대한 간단한 설명입니다.

apc.enabled bool
apc.enabled를 0으로 설정하여 APC를 비활성화할 수 있습니다. 이것은 APC를 비활성화할 다른 방법이 없기 때문에 APC가 PHP로 정적으로 컴파일될 때 주로 유용합니다(DSO로 컴파일할 때 php.ini확장 라인은 주석 처리될 수 있습니다).
apc.shm_segments int
컴파일러 캐시에 할당할 공유 메모리 세그먼트의 수입니다. APC에 공유 메모리가 부족하지만 apc.shm_size가 시스템에서 허용하는 만큼 높게 설정되어 있는 경우 이 값을 높이면 APC가 메모리를 소진하는 것을 방지할 수 있습니다.
apc.shm_size string
이 FAQ에 설명된 대로 약식 표기법으로 제공되는 각 공유 메모리 세그먼트의 크기입니다. 기본적으로 일부 시스템(대부분의 BSD 변형 포함)은 공유 메모리 세그먼트 크기에 대한 제한이 매우 낮습니다.
apc.entries_hint int
저장할 수 있는 고유한 변수의 수에 대한 "힌트"입니다. 0으로 설정하거나 확실하지 않으면 생략하십시오.
apc.ttl int
이 캐시 항목 슬롯이 다른 항목에 필요한 경우 캐시 항목이 슬롯에서 유휴 상태로 허용되는 시간(초)입니다. 이 값을 0으로 두면 APC의 캐시가 잠재적으로 오래된 항목으로 채워질 수 있지만 새 항목은 캐시되지 않습니다. 캐시에 사용 가능한 메모리가 부족한 경우 ttl이 0이면 캐시가 완전히 삭제됩니다. 그렇지 않고 ttl이 0보다 크면 APC는 만료된 항목을 제거하려고 시도합니다.
apc.gc_ttl int
캐시 항목이 가비지 수집 목록에 남아 있을 수 있는 시간(초)입니다. 이 값은 캐시된 소스 파일을 실행하는 동안 서버 프로세스가 종료되는 경우 안전 장치를 제공합니다. 해당 소스 파일이 수정되면 이 TTL에 도달할 때까지 이전 버전에 할당된 메모리가 회수되지 않습니다. 이 기능을 비활성화하려면 0으로 설정하십시오.
apc.mmap_file_mask string
--enable-mmap을 사용하여 MMAP 지원으로 컴파일된 경우 mmap'된 메모리 영역이 파일 지원 또는 공유 메모리 지원 여부를 결정하기 위해 mmap 모듈에 전달할 mktemp 스타일 file_mask입니다. 스트레이트 파일 지원 mmap의 경우 /tmp/apc.XXXXXX(정확히 6개의 X)와 같이 설정합니다. POSIX 스타일 shm_open/mmap을 사용하려면 마스크의 어딘가에 .shm을 넣으십시오. 예를 들어 /apc.shm.XXXXXX /dev/zero로 설정하여 익명의 mmap된 메모리에 대한 커널의 /dev/zero 인터페이스를 사용할 수도 있습니다. 정의되지 않은 상태로 두면 익명의 mmap이 강제 실행됩니다.
apc.slam_defense int
매우 바쁜 서버에서 서버를 시작하거나 파일을 수정할 때마다 동일한 파일을 동시에 캐시하려는 많은 프로세스의 경쟁을 만들 수 있습니다. 이 옵션은 캐시되지 않은 파일 캐시 시도를 건너뛸 프로세스의 백분율을 설정합니다. 또는 단일 프로세스가 캐싱을 건너뛸 확률로 생각하십시오. 예를 들어, apc.slam_defense75로 설정하면 프로세스가 캐시되지 않은 파일을 캐시하지 않을 확률이 75%가 됩니다. 따라서 설정이 높을수록 캐시 슬램에 대한 방어력이 높아집니다. 이것을 0으로 설정하면 이 기능이 비활성화됩니다.
apc.enable_cli int
주로 테스트 및 디버깅용입니다. 이를 설정하면 PHP의 CLI 버전에 대해 APC가 활성화됩니다. 일반적인 상황에서는 모든 CLI 요청에 대해 APC 캐시를 생성, 채우고 제거하는 것이 이상적이지 않지만 다양한 테스트 시나리오에서는 PHP의 CLI 버전에 대해 APC를 쉽게 활성화할 수 있는 것이 유용합니다.
apc.serializer string
타사 직렬 변환기를 사용하도록 APC를 구성하는 데 사용됩니다.
apc.coredump_unmap bool
신호를 받을 때 코어 파일을 쓰는 SIGSEGV와 같은 신호의 APC 처리를 활성화합니다. 이러한 신호가 수신되면 APC는 공유 메모리 세그먼트를 코어 파일에서 제외하기 위해 매핑 해제를 시도합니다. 이 설정은 치명적인 신호가 수신되고 큰 APC 공유 메모리 세그먼트가 구성된 경우 시스템 안정성을 향상시킬 수 있습니다.

경고 이 기능은 잠재적으로 위험합니다. 치명적인 신호 처리기에서 공유 메모리 세그먼트 매핑을 해제하면 치명적인 오류가 발생할 경우 정의되지 않은 동작이 발생할 수 있습니다.

메모: 일부 커널은 코어 덤프 파일을 생성할 때 다양한 유형의 공유 메모리를 무시하는 기능을 제공할 수 있지만 이러한 구현은 Apache 스코어보드와 같은 중요한 공유 메모리 세그먼트를 무시할 수도 있습니다.

apc.preload_path string
선택적으로 APC가 시작 시 캐시 데이터를 로드할 디렉터리 경로를 설정합니다.
apc.use_request_time bool
Use the SAPI request start time for TTL.