Cum să elimini erorile ciudate 404 în wp-admin?

18 aug. 2010, 06:46:16
Vizualizări: 20.4K
Voturi: 8

Administrez un site WordPress cu aproximativ 70 de plugin-uri active.

Din când în când, primesc o pagină de eroare aleatorie ("Not Found", deși nu am verificat header-ele să văd dacă este într-adevăr 404) pe o pagină /wp-admin/ care apare din senin.

Simpla reîncercare rezolvă eroarea, totuși este destul de incomod dacă eroarea apare în timpul unei actualizări de plugin (deoarece reactivarea automată eșuează). Cred că aceeași problemă este responsabilă pentru faptul că anumite module din Panou nu se încarcă uneori.

Având în vedere lista plugin-urilor pe care le am instalate, știe cineva despre probleme cu sau între oricare dintre acestea care ar putea cauza această problemă?

Editare:

Informații despre hosting: DreamHost; Cred că serverul rulează o versiune personalizată de Debian cu Apache httpd

5
Comentarii

Nu vreau să fiu enervant, dar aceasta este cu adevărat o problemă de suport și nu ceva ce am aborda aici; voi vota pentru închidere. Pune întrebarea pe http://wordpress.org/support în schimb. Dacă faci niște teste și restrângi întrebarea să fie aplicabilă pentru mai mult decât doar situația ta, s-ar putea să faci o întrebare acceptabilă aici. Din nou, îmi pare rău că trebuie să fiu așa, dar răspunsurile de pe WordPress Answers ar trebui să fie aplicabile pentru toți utilizatorii, iar o mulțime de cereri de suport ar strica asta.

MikeSchinkel MikeSchinkel
18 aug. 2010 08:15:39

Susțin această poziție, așa că voi vota și eu pentru închidere.

Ben Everard Ben Everard
18 aug. 2010 12:57:16

De acord. Votez pentru închidere ca fiind prea localizată.

John P Bloch John P Bloch
18 aug. 2010 17:16:02

Votez să nu fie închis. Mulți utilizatori noi în WordPress pot întâlni erori 404 în WP-Admin, iar în cele din urmă problema se reduce la un bug într-un plugin sau temă, sau la efectul acestora asupra unei reguli de rescriere (fie stocată în baza de date în wp-options, fie în fișierul .htaccess). Ceea ce ar trebui să facem, în schimb, este să oferim pași generali de depanare pe care cineva îi poate urma pentru a identifica zona problematică mult mai rapid.

Volomike Volomike
18 aug. 2010 23:21:36

Deși aceasta tinde să fie o întrebare de asistență, conține suficiente informații pentru a sugera cel puțin câteva modalități de a rezolva rapid problema.

hakre hakre
20 aug. 2010 13:11:14
Toate răspunsurile la întrebare 5
2

Am avut probleme toată ziua cu ceea ce părea a fi erori 404 nejustificate.

Oricum, tocmai am terminat o conversație cu un tehnician de la Dreamhost care mi-a spus că un cont de utilizator pe care îl am la ei a depășit limitele de memorie alocate proceselor (toate procesele) și asta a cauzat probleme ciudate, aparent legate de fișierul htaccess. Primeam erori 404 intermitente de la un fișier htaccess care nici măcar nu ar fi trebuit să fie apelat! Dreamhost avea un server cu activitate paranormală.

Se pare că robotul folosit de Dreamhost pentru a opri procesele omoară un proces web în mijlocul execuției, iar apoi din nu știu ce motiv, Apache (acum zombi) încearcă să-și termine treaba (cred că încearcă să iasă cât mai curat posibil dintr-un subrequest întrerupt brutal). Aruncă o eroare 500 în jurnalul principal HTTP, dar după aceea, rulează condiția și regula de rescriere care nu ar fi trebuit niciodată să fie declanșate (folosind verificările standard -f pentru fișier și -d pentru director din htaccess) - și nu scrie nicio intrare nouă în jurnal! Apoi, o nouă cerere (omul invizibil) declanșează fișierul index de pe ultima linie a htaccess-ului.

Atenție la limitele de resurse din conturile de bază Dreamhost! Dacă depășești limitele și ai fișiere htaccess cu reguli mod_rewrite, vei vedea lucruri ciudate care sunt potrivite doar pentru noaptea Halloweenului - oameni invizibili, erori 404 fantomă! Procese nemuritoare! Apache zombi! Htaccess care se mișcă singur! Brr!

Sper că acest lucru vă va ajuta să evitați câteva ore de chin.

23 oct. 2010 05:38:07
Comentarii

Cu siguranță am o mulțime de reguli mod_rewrite în fișierele mele .htaccess. Se pare că asta mi se întâmplă și mie. Știam că am probleme cu limitele de memorie la joburile de backup, dar nu și la cererile "reale". Mulțumesc pentru experiența împărtășită; sper ca răspunsul tău să salveze mult timp multor oameni.

dgw dgw
23 oct. 2010 23:56:03

Nu este doar la Dreamhost. Am migrat de la Dreamhost la un server privat altundeva și încă am această problemă tot timpul.

supertrue supertrue
24 sept. 2012 01:09:23
4

Singura modalitate de a depana această problemă este să dezactivezi câte un plugin pe rând, încercând să reproduci problema înainte de a dezactiva următorul plugin. Începe cu pluginurile care au legătură cu administrarea WordPress, apoi treci la pluginurile obișnuite pentru teme, widget-uri și altele asemenea.

Analizează mai atent pagina "Not Found" pe care o primești (navighează cu Opera și deschide panoul Info care îți va afișa antetele sau folosește Firefox cu panoul "Net" din Firebug activat) și caută în toate pluginurile tale pentru a vedea dacă vreunul servește direct acea pagină. Dacă nu, verifică jurnalul serverului web pentru a afla exact ce resursă nu poate fi servită; un plugin ar putea să facă o redirecționare sau rescriere complexă, așa că nu neapărat URL-ul pe care îl vezi în browser este cel care provoacă eroarea 404.

18 aug. 2010 23:17:29
Comentarii

La 70 de plugin-uri, ar fi foarte util să găsim o metodă de a face acest lucru extrem de rapid, fără a fi nevoie să dezactivăm și să testăm manual fiecare în parte, cum ar fi prin utilizarea unui fișier de testare a plugin-urilor.

Volomike Volomike
18 aug. 2010 23:23:45

Văd că ați editat răspunsul original cu un sfat excelent pentru a găsi soluția mai rapid.

Volomike Volomike
18 aug. 2010 23:45:07

Mulțumesc, asbjornu. O să analizez această metodă după ce mă întorc din vacanța cu familia.

dgw dgw
19 aug. 2010 18:45:28

Am parcurs jurnalele serverului și nu am găsit nimic mai specific decât "Premature end of script header". Presupun că nu putea fi atât de simplu...

dgw dgw
1 sept. 2010 23:34:59
2

Acesta este doar o idee aproximativă: Dacă primiți o eroare 404 "reală" (cu antete setate), atunci puteți căuta prin plugin-urile dumneavoastră și să căutați funcția PHP header() și numărul 404. Acest lucru ar putea reduce numărul de plugin-uri de la 70 la doar câteva. Apoi trebuie doar să le verificați pe acelea.

Acest lucru poate fi făcut ușor cu un IDE precum Eclipse PDT care oferă căutare pentru un apel specific de funcție PHP.

Pe lângă aceasta, dar fără garanție că va funcționa cu succes, este să scrieți un plugin care se conectează la setarea antetelor și apoi vă oferă urmărirea care cod setează efectiv un potențial 404 (backtrace). Acest lucru ar funcționa doar dacă plugin-ul utilizează funcția API WordPress. Prima metodă de a căuta funcția PHP va funcționa indiferent de API-ul WP.

20 aug. 2010 13:08:34
Comentarii

Sună promițător. Ceva de verificat după vacanța mea. :)

dgw dgw
21 aug. 2010 07:16:16

Am reușit să investighez puțin încă fiind în afara orașului și am descoperit doar că plugin-ul meu de backup pare să genereze un cod 404. Firebug confirmă că e într-adevăr o eroare 404. Ceva progres... Totuși acum am probleme să reproduc problema, așa că cred că voi face o pauză. Urăsc bug-urile intermitente!

dgw dgw
1 sept. 2010 23:33:59
0

Pot să relatez doar experiența mea personală, și până acum, nu am găsit o regulă "definitivă" care să rezolve toate problemele dintr-o singură lovitură.

Principala problemă cu configurația DreamHost este că, în lupta eternă de a menține consumul de memorie la un nivel minim, înseamnă eliminarea cât mai multor funcționalități posibile — și anume, toate cele care ar reduce lățimea de bandă (bun pentru vizitatori!) sau CPU-ul (bun pentru server, dar DreamHost nu controlează consumul de CPU la fel de agresiv cum controlează RAM-ul). De exemplu, asta înseamnă eliminarea HTML-ului și CSS-ului comprimat cu gzip (care ar consuma CPU + RAM) sau a oricăruia dintre pluginurile de minimizare (care ar consuma și ele RAM). Cu cât cache-ul este mai sofisticat (eu prefer să folosesc W3 Total Cache, sau cel puțin WP Super Cache), cu atât va fi consumat mai mult RAM.

În mod similar, multe pluginuri care limitează numărul de interogări MySQL pentru a îmbunătăți performanța vor consuma în schimb RAM. Așadar, găsirea unui compromis în care site-ul tău răspunde în continuare cu performanțe bune, evitând consumul prețios de RAM, este o sarcină dificilă!

Până acum, cele mai bune rezultate pe site-uri aglomerate le-am obținut prin dezactivarea Optimizării Vitezei Paginilor și a Securității Web Suplimentare, care par să consume foarte mult RAM, și prin folosirea în schimb a unei combinații între W3 Total Cache și Cloudflare (serviciu gratuit de proxy invers). Cloudflare va face efectiv același lucru ca modulul "Securitate Web Suplimentară", dar deoarece rulează în afara DreamHost, este în regulă. W3 Total Cache consumă multă memorie, dar odată ce paginile sunt stocate static local, Cloudflare le va cache-ui foarte eficient — așa că s-ar putea să primești erori 404/500 în timp ce editezi postări, dar cel puțin vizitatorii tăi nu le vor experimenta (Cloudflare poate servi pagini statice chiar dacă DreamHost returnează un 404 sau un 500).

De asemenea, datorită acestui articol, am aflat că FastCGI folosește mai mult RAM decât CGI-ul 'normal'. Și deoarece PHP 5.3 este mai bun la gestionarea RAM-ului (colectare mai agresivă a gunoiului, mai puține scurgeri de memorie), am trecut experimental la PHP 5.3 CGI (nu FastCGI) fără Optimizarea Vitezei Paginilor și fără Securitatea Web Suplimentară, bazându-mă pe W3 Total Cache + Cloudflare pentru a accelera site-ul. Acum backoffice-ul este mai lent (consum mai mare de CPU!), dar cel puțin nu mai văd erori 404/500 (până acum!).

Încă nu sunt mulțumit de această combinație, așa că cu siguranță voi continua să ajustez setările DreamHost în speranța de a reduce și mai mult consumul de RAM și de a obține totuși performanțe adecvate. Precum @dgw a menționat, și eu folosesc multe pluginuri — pentru că am nevoie de funcționalitățile lor. Nu toți cei care găzduiesc WordPress pe DreamHost au nevoi simple, de blogging; cu cât site-ul este mai complex, cu atât va necesita mai multă funcționalitate... și aceasta este frumusețea WordPress, trebuie doar să folosești pluginurile de care ai cu adevărat nevoie și să păstrezi instalarea de bază simplă dacă ești mulțumit cu puține nevoi. Pluginurile, totuși, nu sunt neapărat "rele" sau grele pentru site; dar este adevărat că unele pot consuma mult RAM...

11 sept. 2011 17:02:26
2

Mai multe informații necesare:

1) De ce atât de multe plugin-uri?

2) Ce sistem de operare rulează pe serverul de hosting?

3) Ce server web folosești?

4) Ai acces la jurnalele serverului httpd, în special la jurnalele de erori?

5) Ce afișează jurnalele de erori în perioada în care apar aceste probleme?

(Acum, dacă generalizăm pentru "utilizatorul mediu WordPress care ar putea avea această întrebare exactă, am putea începe prin a-l îndruma să răspundă la cele 5 întrebări de mai sus...)

18 aug. 2010 23:47:37
Comentarii

Am toate acele plugin-uri pentru că folosesc funcțiile pe care le oferă; altfel de ce le-aș avea? Jurnalele de erori nu spun prea multe. Sunt pe DreamHost, așa că cred că serverul rulează o versiune personalizată de Debian cu Apache httpd.

dgw dgw
1 sept. 2010 23:37:11

Acum că menționezi, văd și eu acele erori aleatorii pe site-urile mele de pe DH. Se întâmplă în special când încerc să fac o actualizare de rețea în instalațiile mele MS și să rulez importatorul.

Ciudat.

ZaMoose ZaMoose
3 sept. 2010 23:44:46