PHP 5.6: O que significa “opcache: buffers de strings estocadas internamente”?

3

Estou executando o PHP 5.6 e habilitei o módulo compilado opcache. Agora, quando eu leio os avisos dentro do meu log de erros, recebo essas mensagens a cada poucos milissegundos:

Warning Interned String buffer overflow

Não há descrição para este erro usando esta pesquisa no google . No entanto, o código-fonte diz, há pode não ser suficiente memória Eu li isso corretamente?

Então, no meu entender, está tudo bem se o cache ficar exausto e for reutilizado / reciclado para novas strings. Se não, o que estou perdendo?

Defino opcache.interned_string_buffer de 4 a 8 MiB, mas ainda não tenho sorte.

    
por Ben 07.09.2015 / 10:30

2 respostas

4

opcache.interned_strings_buffer - A pretty neat setting with like 0 documentation. PHP uses a technique called string interning to improve performance— so, for example, if you have the string "foobar" 1000 times in your code, internally PHP will store 1 immutable variable for this string and just use a pointer to it for the other 999 times you use it. Cool. This setting takes it to the next level— instead of having a pool of these immutable string for each SINGLE php-fpm process, this setting shares it across ALL of your php-fpm processes. It saves memory and improves performance, especially in big applications.

link

    
por 02.12.2015 / 17:29
0

Há um bug em andamento que afeta alguns usuários quando o opcache.interned_string_buffer não está alto o suficiente. O bug faz com que o Apache falhe, então você definitivamente saberia se você estava enfrentando o problema.

Eu recomendo criar temporariamente um arquivo php como o info.php e adicionar

<?php phpinfo(); ?>

veja o arquivo no seu navegador para ver facilmente "Interned Strings Used memory" e certifique-se de ter alguma memória livre. Eu tenho um site wordpress bastante grande e eu tenho o meu limite de memória definido em 32. Eu consistentemente tenho cerca de 14MB interned strings memória usada.

    
por 21.06.2018 / 01:46

Tags