mirror of
https://github.com/php/doc-ru.git
synced 2025-08-16 18:22:04 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@347581 c90b9560-bf6c-de11-be94-00142212c4b1
379 lines
17 KiB
XML
379 lines
17 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 7ff4c27858f8cf53ca34a4c552ec4dcc09e2ab2b Maintainer: rjhdby Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<!-- $Revision$ -->
|
||
<section xml:id="apcu.configuration" xmlns="http://docbook.org/ns/docbook">
|
||
&reftitle.runtime;
|
||
&extension.runtime;
|
||
<para>
|
||
Хотя настроек APCu по умолчанию вполне достаточно для большинства задач, но для
|
||
серьезных проектов необходимо внимательно изучить следующие настройки.
|
||
</para>
|
||
<para>
|
||
При настройке APCu необходимо определиться, сколько пямяти
|
||
предоставить в распоряжение APCu.
|
||
Директива ini-файла, ответственная за эту настройку - <literal>apc.shm_size</literal>.
|
||
Внимательно прочитайте нижеследующий раздел.
|
||
</para>
|
||
<para>
|
||
Как только сервер запущен, скрипт <literal>apc.php</literal>, поставляемый с
|
||
этим расширением, должен быть скопирован в "docroot" и права на него должны
|
||
позволять запустить его через браузер. Этот скрипт предоставляет детальную информацию
|
||
по работе APCu. Если в PHP разрешен GD, то этот скрипт также будет показывать
|
||
полезные графики. Конечно же первое, что будет интересно, это то, кеширует
|
||
ли APC что нибудь. Если APC работает, то значение <literal>Cache full count
|
||
</literal> (слева) будет показывать, сколько раз кеш был полностью заполнен и был
|
||
вынужден принудительно удалить записи, к которым не обращались последние
|
||
<literal>apc.ttl</literal> секунд. Чем меньше это число - тем лучше сконфигурирован кеш.
|
||
Если это число постоянно растет, значит APCu приходится постоянно очищать старые
|
||
записи и значит теряется весь смысл кеширования. Самый лучший способ
|
||
уменьшить это число - это добавить APCu памяти. Если сделать этого нельзя,
|
||
то надо перенастроить <literal>apc.filters</literal>, что бы ограничить набор
|
||
кешируемых скриптов.
|
||
</para>
|
||
<para>
|
||
Если APCu собран с поддержкой mmap (Memory Mapping), он будет использовать
|
||
всего один сегмент памяти, если же наоборот, APC собран с поддержкой SHM (SysV Shared
|
||
Memory), он будет использовать несколько сегментов. MMAP не имеет максимального
|
||
ограничения, в отличие от SHM, который ограничивается
|
||
<literal>/proc/sys/kernel/shmmax</literal>. Обычно рекомендуется использовать MMAP,
|
||
потому что он гораздо быстрее выделяет память при перезагрузке веб-сервера, что
|
||
сказывается на скорости запуска сервера.
|
||
</para>
|
||
<para>
|
||
<table>
|
||
<title>Опции конфигурации 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>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.shm-segments">apc.shm_segments</link></entry>
|
||
<entry>"1"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.shm-size">apc.shm_size</link></entry>
|
||
<entry>"32M"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.entries-hint">apc.entries_hint</link></entry>
|
||
<entry>"4096"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.ttl">apc.ttl</link></entry>
|
||
<entry>"0"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.gc-ttl">apc.gc_ttl</link></entry>
|
||
<entry>"3600"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.mmap-file-mask">apc.mmap_file_mask</link></entry>
|
||
<entry>NULL</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.slam-defense">apc.slam_defense</link></entry>
|
||
<entry>"1"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.enable-cli">apc.enable_cli</link></entry>
|
||
<entry>"0"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.use-request-time">apc.use_request_time</link></entry>
|
||
<entry>"1"</entry>
|
||
<entry>PHP_INI_ALL</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.serializer">apc.serializer</link></entry>
|
||
<entry>"default"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.coredump-unmap">apc.coredump_unmap</link></entry>
|
||
<entry>"0"</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry><link linkend="ini.apcu.preload-path">apc.preload_path</link></entry>
|
||
<entry>NULL</entry>
|
||
<entry>PHP_INI_SYSTEM</entry>
|
||
<entry></entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
&ini.php.constants;
|
||
</para>
|
||
|
||
&ini.descriptions.title;
|
||
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry xml:id="ini.apcu.enabled">
|
||
<term>
|
||
<parameter>apc.enabled</parameter>
|
||
<type>boolean</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Если установить <literal>apc.enabled</literal> равным 0, то APCu не будет запущен.
|
||
Это полезно, когда APCu статически включен в PHP и нет других вариантов, для запрещения
|
||
его использования. Если APC собран как DSO, можно просто закомментировать строку
|
||
<literal>extension</literal> в <literal>php.ini</literal>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.shm-segments">
|
||
<term>
|
||
<parameter>apc.shm_segments</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Количество сегментов разделяемой памяти выделенной под кеш.
|
||
Если APC использовал всю доступную разделяемую память, а
|
||
<literal>apc.shm_size</literal> таким большим, как позволяет система, увеличение
|
||
этого параметра может помочь.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.shm-size">
|
||
<term>
|
||
<parameter>apc.shm_size</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Размер сегмента разделяемой памяти, заданный в короткой нотации (смотри
|
||
<link linkend="faq.using.shorthandbytes">этот FAQ</link>).
|
||
По умолчанию, некоторые системы (включая большинство вариантов BSD)
|
||
ограничивают это значение крайне малым значением.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.entries-hint">
|
||
<term>
|
||
<parameter>apc.entries_hint</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Это подсказка о количестве уникальных пользовательских переменных,
|
||
которые надо кешировать. Установите равным нулю или вообще не
|
||
указывайте, если не уверены.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.ttl">
|
||
<term>
|
||
<parameter>apc.ttl</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Количество секунд, которые запись может лежать в кеше без обращения к ней,
|
||
прежде чем будт разрешено ее заменить на другую.
|
||
Установка этого параметра равного нулю может привести к тому,
|
||
что все место будет забито и новые записи не смогут попасть в кеш.
|
||
В этом случае, если параметр равен 0, кеш будет полностью
|
||
очищен. Если же ttl будет больше нуля, то APCu постарается
|
||
очистить устаревшие записи.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.gc-ttl">
|
||
<term>
|
||
<parameter>apc.gc_ttl</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Количество секунд, которые запись может находиться в
|
||
списке сборщика мусора. Это значение обеспечивает
|
||
безотказность в случае падения сервера в момент
|
||
исполнения закешированного файла.
|
||
Если исполняемый файл был изменен, память, выделенная
|
||
под кеширование его старой версии, не будет
|
||
возвращена до истечения этого времени.
|
||
Установка в ноль отключает этот функционал.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.mmap-file-mask">
|
||
<term>
|
||
<parameter>apc.mmap_file_mask</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Если собран с поддержкой MMAP, с помощью опции <literal>--enable-mmap</literal>,
|
||
этот параметр должен содержать файловую маску типа mktemp-style для
|
||
передачи в расширение MMAP, что бы определить, будет ли MMAP использовать
|
||
файловую систему или разделяемую память.
|
||
Для файловой системы задайте опцию как <literal>/tmp/apc.XXXXXX</literal>
|
||
(ровно 6 <literal>X</literal>).
|
||
Для использования shm_open/mmap в стиле POSIX, добавьте <literal>.shm</literal>
|
||
в любом месте маски, например <literal>/apc.shm.XXXXXX</literal>
|
||
Вы также можете установить его как <literal>/dev/zero</literal> для использования
|
||
интерфейса ядра <literal>/dev/zero</literal> для анонимной памяти mmap.
|
||
Если не задано, то будет принудительно использоваться анонимный mmap.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.slam-defense">
|
||
<term>
|
||
<parameter>apc.slam_defense</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
На очень загруженных серверах, когда вы запускаете веб-сервер,
|
||
сразу множество процессов будут пытаться закешировать один и тот-же
|
||
файл одновременно. Этой опцией задается вероятность, в процентах,
|
||
того, что попытка одного конкретного процесса закешировать данные
|
||
будет отклонена. Например если <literal>apc.slam_defense</literal>
|
||
установить равной <literal>75</literal>, то это означает, что
|
||
вероятность закешировать файл, которого в кеше нет,
|
||
будет равна 25% и вероятность того, что в кешировании будет
|
||
отказано равна 75%. Для запрета данного функционала установите
|
||
этот параметр равным <literal>0</literal>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.enable-cli">
|
||
<term>
|
||
<parameter>apc.enable_cli</parameter>
|
||
<type>integer</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Больше для тестирования и отладки. Эта настройка разрешае APCu
|
||
для CLI версии PHP. При обычной работе, запускать APCu, который
|
||
будет создавать, наполнять и уничтожать кеш при каждом запуске
|
||
сценария в консоли, будет далеко не лучшей идеей. Но в целях
|
||
тестирования и отладки, можно легко включить APCu для CLI.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.serializer">
|
||
<term>
|
||
<parameter>apc.serializer</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Указывает APC использовать сторонний сериализатор.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.coredump-unmap">
|
||
<term>
|
||
<parameter>apc.coredump_unmap</parameter>
|
||
<type>boolean</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Разрешает APC перехватывать сигналы, такие как SIGSEGV, который записывает
|
||
coredump, когда подан. Когда эти сигналы будут получены, APC попытается
|
||
освободить всю разделяемую память, что бы не включать ее в coredump. Эта
|
||
настройка может увеличить стабильность системы, когда критический сигнал был получен,
|
||
а APC сконфигурирован на использование большого объема памяти.
|
||
</para>
|
||
<warning>
|
||
<para>
|
||
Эта возможность потенциально опасна. Освобождение сегментов разделяемой
|
||
памяти при получении критического сигнала может привести к непредсказуемому
|
||
поведению.
|
||
</para>
|
||
</warning>
|
||
<note>
|
||
<para>
|
||
Хотя некоторые ядра предоставляют возможность игнорировать некоторые
|
||
сегменты разделяемой памяти при записи core-файла, эти реализации
|
||
могут также игнорировать важные сегменты памяти, такие как Apache scoreboard.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry xml:id="ini.apcu.preload-path">
|
||
<term>
|
||
<parameter>apc.preload_path</parameter>
|
||
<type>string</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Опционально. Задает путь, который используется APC для загрузки кешированных данных
|
||
во время запуска.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry xml:id="ini.apcu.use-request-time">
|
||
<term>
|
||
<parameter>apc.use_request_time</parameter>
|
||
<type>bool</type>
|
||
</term>
|
||
<listitem>
|
||
<para>
|
||
Использовать время старта запроса <acronym>SAPI</acronym> для
|
||
<acronym>TTL</acronym>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</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
|
||
-->
|