Files
2026-01-18 23:13:55 +00:00

385 lines
14 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 804d8a05451c13328eb1192553dcb2374706cabb Maintainer: leonardolara Status: ready -->
<section xmlns="http://docbook.org/ns/docbook" xml:id="apcu.configuration">
&reftitle.runtime;
&extension.runtime;
<simpara>
Embora as configurações padrão do APCu são adequadas para muitas instalações, usuários
devem considerar ajustes para os parâmetros abaixo.
</simpara>
<simpara>
Existe uma decisão a ser tomada ao configurar o APCu:
quanta memória será alocada ao APCu.
A diretiva ini que controla isso é <literal>apc.shm_size</literal>,
leia cuidadosamente as seções sobre este assunto abaixo.
</simpara>
<simpara>
Uma vez que o servidor está em execução, o script <literal>apc.php</literal> que é
incluído com a extensão deve ser copiado para algum lugar dentro do diretório raiz dos documentos e
visualizado com um navegador pois ele fornece uma análise detalhada do funcionamento
interno do APCu. Se a GD estiver habilitada no PHP, ele irá mostrar inclusive alguns
gráficos interessantes.</simpara>
<simpara>
Se o APCu estiver funcionando, o número <literal>Cache full count
</literal> (na esquerda) mostrará o número de vezes que o cache
atingiu a capacidade máxima e teve que despejar entradas para liberar memória.
Durante o despejo, se <literal>apc.ttl</literal> foi especificado, o APCu inicialmente
tentará remover entradas expiradas, isto é, entradas cujo TTL tenha expirado ou
entradas que não tenham o TTL definido e não tenham sido acessadas nos últimos
<literal>apc.ttl</literal> segundos. Se <literal>apc.ttl</literal> não foi definido,
ou se a remoção de entradas expiradas não liberou espaço suficiente, o APCu limpará
o cache inteiro.
</simpara>
<simpara>
O número de despejos deve ser mínimo em um cache bem configurado. Se o
cache está constantemente atingindo o limite, e por isso sendo liberado à força,
a agitação resultante terá efeitos depreciativos no desempenho do script. A maneira mais fácil
de minimizar este número é alocar mais memória para o APCu.
</simpara>
<simpara>
Quando o APCu é compilado com suporte a mmap (Mapeamento de Memória), ele usará somente um
segmento de memória, ao contrário de quando for compilado com suporte a SHM (Memória Compartilhada SysV)
que usa múltiplos segmentos. MMAP não tem um limite máximo como o SHM
em <literal>/proc/sys/kernel/shmmax</literal>. Em geral o suporte MMAP é
recomendado porque ele irá recuparar a memória mais rapidamente quando o servidor web for
reiniciado e, sumazirando, reduzirá o impacto na alocação de memória na inicialização.
</simpara>
<para>
<table>
<title>Opções de configuração APCu</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>&Changelog;</entry>
</row>
</thead>
<tbody>
<row>
<entry><link linkend="ini.apcu.enabled">apc.enabled</link></entry>
<entry>1</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.shm-segments">apc.shm_segments</link></entry>
<entry>1</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.shm-size">apc.shm_size</link></entry>
<entry>"32M"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.entries-hint">apc.entries_hint</link></entry>
<entry>512 * apc.shm_size</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry>Antes do APcu 5.1.25, o padrão era 4096</entry>
</row>
<row>
<entry><link linkend="ini.apcu.ttl">apc.ttl</link></entry>
<entry>0</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.gc-ttl">apc.gc_ttl</link></entry>
<entry>3600</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.mmap-file-mask">apc.mmap_file_mask</link></entry>
<entry>NULL</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.slam-defense">apc.slam_defense</link></entry>
<entry>0</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.enable-cli">apc.enable_cli</link></entry>
<entry>0</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.use-request-time">apc.use_request_time</link></entry>
<entry>0</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>Antes do APCu 5.1.19, o padrão era <literal>1</literal>.</entry>
</row>
<row>
<entry><link linkend="ini.apcu.serializer">apc.serializer</link></entry>
<entry>"php"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry>Antes do APCu 5.1.15, o padrão era <literal>"default"</literal>.</entry>
</row>
<row>
<entry><link linkend="ini.apcu.coredump-unmap">apc.coredump_unmap</link></entry>
<entry>0</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.apcu.preload-path">apc.preload_path</link></entry>
<entry>NULL</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
</tbody>
</tgroup>
</table>
&ini.php.constants;
</para>
&ini.descriptions.title;
<variablelist>
<varlistentry xml:id="ini.apcu.enabled">
<term>
<parameter>apc.enabled</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
<literal>apc.enabled</literal> pode ser definido para 0 para desabilitar o APC. Isto é
útil principalmente quando o APC é compilado estaticamente
no PHP, já que não há outra maneira de desabilitá-lo
(quando compilado como um DSO, a linha <literal>extension</literal>
no <literal>php.ini</literal> pode ser simplesmente comentada).
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.shm-segments">
<term>
<parameter>apc.shm_segments</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
O número de segmentos de memória compartilhada a alocar
para o cache do compilador. Se o APC estiver com pouca
memória compartilhada mas <literal>apc.shm_size</literal>
estiver definido com um valor tão alto quanto o sistema permite, aumentar
este valor pode evitar que o APC tenha a memória exaurida.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.shm-size">
<term>
<parameter>apc.shm_size</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
O tamanho de cada segmento de memória compartilhada, informado como uma notação reduzida
como descrito <link linkend="faq.using.shorthandbytes">neste FAQ</link>.
Por padrão, alguns sistemas (incluindo a maior parte das variantes
BSD) têm limites muito baixos no tamanho de um
segmento de memória compartilhada.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.entries-hint">
<term>
<parameter>apc.entries_hint</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Uma "pista" sobre o número de variáveis distintas que podem ser armazenadas.
Defina para zero ou omita se não tiver essa informação.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.ttl">
<term>
<parameter>apc.ttl</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Considera que entradas de cache sem um TTL explícito estão
expiradas se não foram acessadas nos segundos definidos por esta
diretiva. Efetivamente, isto permite que tais entradas sejam
removida oportunamente durante uma inserção de cache ou antes de
uma eliminação completa. Observe que devido à remoção ser
oportunap, as entradas ainda podem ser lidas mesmo se
forem mais antigas que <literal>apc.ttl</literal> segundos.
Esta configuração não tem efeito em entradas de cache que tenham
um TTL explícito especificado.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.gc-ttl">
<term>
<parameter>apc.gc_ttl</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
O número de segundos que uma entrada de cache pode
permanecer na lista de coleta de lixo após ser removida ou inicializada.
Uma entrada é elegível a remoção se sua contagem de referência for zero,
ou se exceder este limite de tempo.
Se definido para <literal>0</literal>, a limpeza baseada em tempo é desativada,
e as entradas só serão removidas quando suas contagens de referência caírem para zero.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.mmap-file-mask">
<term>
<parameter>apc.mmap_file_mask</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
Se compilado com suporte MMAP usando <literal>--enable-mmap</literal>
esta é a máscara de arquivo em estilo mktemp a ser passada ao
módulo mmap para determinar se a região de memória mapeada pelo MMAP
será apoiada por arquivo ou apoiada por memória
comparilhada. Para MMAP diretamente apoiada por arquivo, defina para
algo como <literal>/tmp/apc.XXXXXX</literal>
(exatamente 6 <literal>X</literal>).
Oara usar shm_open/mmap em estilo POSIX, insira um <literal>.shm</literal>
em algum lugar da máscara (por exemplo, <literal>/apc.shm.XXXXXX</literal>).
Pode-se também defini-la para <literal>/dev/zero</literal> para usar a
interface <literal>/dev/zero</literal> do kernel para memória mapeada
anonimamente. Deixar este valor indefinido força um mapeamento anônimo.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.slam-defense">
<term>
<parameter>apc.slam_defense</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
Em um servidor muito ocupado, toda vez que ele for reiniciado
ou quando arquivos forem modificados, pode-se criar uma condição de corrida onde muitos
processos tentam inserir o mesmo arquivo no cache ao mesmo tempo.
Definir <literal>apc.slam_defense</literal> para <literal>1</literal>
pode ajudar a evitar que múltiplos processos tentem fazer cache do
mesmo arquivo ao mesmo tempo, através da introdução de um mecanismo
probabilístico. Se a mesma chave sofrer tentativa de cache
dentro de um intervalo curto de tempo por diferentes processos, ele
pula a tarefa de cache do processo atual para mitigar potenciais
conflitos de cache.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.enable-cli">
<term>
<parameter>apc.enable_cli</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Esta diretiva serve principalmente para teste e depuração. Habilita APC
para a versão CLI do PHP. Em circunstâncias normais, não é
ideal criar, popular e destruir o cache APC a cada
requisição CLI, mas para vários cenários de teste é útil para
ser capaz de habilitar o APC para a versão CLI do PHP facilmente.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.serializer">
<term>
<parameter>apc.serializer</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
Usada para configurar o APC para usar um serializador de terceiros.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.coredump-unmap">
<term>
<parameter>apc.coredump_unmap</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
Habilita o gerenciamento APC de sinais, tal como SIGSEGV, que grava
arquivos de núcleo quando sinalizado. Quandos esses sinais são recebidos,
o APC tentará desmapear o segmento de memória compartilhada para
excluí-lo do arquivo de núcleo. Esta configuração pode melhorar
a estabilidade do sistema quando sinais fatais são recebidos e um grande
segmento de memória compartilhada APC estiver configurado.
</simpara>
<warning>
<simpara>
Este recurso é potencialmente perigoso. Desmapear o segmento de memória
compartilhada em um gerenciador de sinal fatal pode causar comportamento
indefinido de um erro fatal ocorrer.
</simpara>
</warning>
<note>
<simpara>
Embora alguns kernels possam fornecer um recurso para ignorar vários
tipos de memória compartilhada ao gerar um arquivo de despejo de núcleo, estas
implementações podem também ignorar segmentos de memória compartilhada importantes
tal como o Scoreboard do Apache.
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.preload-path">
<term>
<parameter>apc.preload_path</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
Opcionalmente, define um caminho para o diretório onde o APC irá carregar
dados de cache na inicialização.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.use-request-time">
<term>
<parameter>apc.use_request_time</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
Usa o horário de início da requisição <acronym>SAPI</acronym> para o
<acronym>TTL</acronym>.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->