O site WordPress funciona por alguns minutos e, em seguida, o site falha com centenas de erros 'Não é possível alocar memória para pool' [duplicados]

1

Estou migrando uma máquina e movi vários sites WordPress de tráfego mínimo (o maior site recebe ~ 200 usuários únicos por dia). Tudo parecia funcionar bem, mas pouco tempo depois eu o carreguei novamente e recebi 'No data received' no navegador. Ativando avisos / mensagens de erro do PHP, vi centenas de mensagens 'Unable to allocate memory for pool'. Se eu reiniciar o Apache, o site funcionará novamente, por algum período de tempo, e parará novamente.

Várias coisas não fazem sentido para mim:

  • O reinício do Apache resolve o problema
  • Um site WordPress diferente no mesmo servidor continua a funcionar bem durante o problema com o outro site
  • O php.ini atual tem mais memória alocada do que a antiga (eu mudei algumas alterações, mas deixei itens como memória no padrão, 128 MB ou algo assim, no servidor antigo era 16 MB)
  • Ao pesquisar por ajuda, vejo referências ao APC, mas não vejo nenhuma evidência de que o APC seja usado aqui
  • Tentei desativar todos os plug-ins, mas sem alterações.

Como pano de fundo, essa migração foi uma alteração na versão 1.x para 2.x do Apache, mas apenas uma relativamente pequena na versão do PHP.

Eu não tenho ideia do que fazer agora.

Ajuda por favor?

Quinxy

Aqui está o meu PHP.ini caso isso ajude (comentários retirados para caber na extensão do post):

[PHP]

engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
error_log = /var/log/php.log
variables_order = "GPCS"
request_order = "GP"
register_globals = On
register_long_arrays = On
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 10M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = On
file_uploads = On
upload_max_filesize = 10M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Phar]
[Syslog]
define_syslog_variables  = Off
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.save_path = "/var/lib/php/session"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
uch as JavaScript.
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
[sysvshm]

apc.ini (o padrão na instalação). Eu não estou usando conscientemente o APC, mas talvez o WordPress o use (comentários retirados):

extension = apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=64M
apc.num_files_hint=1024
apc.user_entries_hint=4096
apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.filters
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.file_update_protection=2
apc.enable_cli=0
apc.max_file_size=1M
apc.stat=1
apc.stat_ctime=0
apc.canonicalize=0
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.include_once_override=0
apc.lazy_classes=0
apc.lazy_functions=0
apc.coredump_unmap=0
apc.file_md5=0
apc.preload_path
    
por Quinxy von Besiex 30.04.2013 / 17:05

1 resposta

0

Turning on PHP warnings/error messages

Isso já deveria ter acontecido - presumo que o arquivo php.ini esteja após você ter ativado o registro de erros.

I see no evidence that APC is used here / I'm not consciously using APC

Isso é uma resposta vaga. Você deve saber como descobrir com certeza. A sério.

Se você executar o Wordpress, algum tipo de cache opcode é essencial.

A APC vem com um script muito útil (apc.php, acessível via link na minha caixa) que informa muitos recursos úteis informações incluindo a configuração + quanto do cache está atualmente em uso + o que é usado por. Este último fato é bastante importante - o Wordpress é fenomenalmente lento e há muitos plugins que tentam acelerá-lo - alguns dos quais usam o APC como um back-end de armazenamento. Você redefiniu o cache do APC depois de desabilitar os plugins?

(Você também encontrará este script na distribuição de origem do APC)

    
por 01.05.2013 / 00:29