Skocz do zawartości
Gość Filip Nowacki

Optymalizacja WordPressa - wp-ajax.php

Polecane posty

Gość Filip Nowacki

Witajcie!

Mam nietypowy problem z WordPressem(wp-ajax.php).

idojXRd.jpg

Wyczytałem, że problemem może być wysyłanie co kilka sekund requesta z backupem posta. Jak to naprawić? Bo limit CPU co raz bliżej ;/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ktoś wie moze co to za narzędzie ktore dostarcza takie wyniki? z podobnych znam psacct ale nie ma on chyba możliwości sprawdzenia ścieżek ( albo jeszcze o tym nie wiem :P )

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ktoś wie moze co to za narzędzie ktore dostarcza takie wyniki? z podobnych znam psacct ale nie ma on chyba możliwości sprawdzenia ścieżek ( albo jeszcze o tym nie wiem :P )

 

Autorskie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyczytałem, że problemem może być wysyłanie co kilka sekund requesta z backupem posta. Jak to naprawić? Bo limit CPU co raz bliżej ;/

 

Sprawdź czy skrypt nie czeka na jakieś dane, bo przy tym liczeniu funkcja sleep zużywa cpu ;)

Tam liczony jest czas działania skryptu, nie użycia cpu

Edytowano przez tgx (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

 

Sprawdź czy skrypt nie czeka na jakieś dane, bo przy tym liczeniu funkcja sleep zużywa cpu ;)

Tam liczony jest czas działania skryptu, nie użycia cpu

Hmm...

Przeanalizowałem kod skryptu:

<?php
/**
 * WordPress AJAX Process Execution.
 *
 * @package WordPress
 * @subpackage Administration
 *
 * @link http://codex.wordpress.org/AJAX_in_Plugins
 */

/**
 * Executing AJAX process.
 *
 * @since 2.1.0
 */
define( 'DOING_AJAX', true );
if ( ! defined( 'WP_ADMIN' ) ) {
	define( 'WP_ADMIN', true );
}

/** Load WordPress Bootstrap */
require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );

/** Allow for cross-domain requests (from the frontend). */
send_origin_headers();

// Require an action parameter
if ( empty( $_REQUEST['action'] ) )
	die( '0' );

/** Load WordPress Administration APIs */
require_once( ABSPATH . 'wp-admin/includes/admin.php' );

/** Load Ajax Handlers for WordPress Core */
require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );

@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
@header( 'X-Robots-Tag: noindex' );

send_nosniff_header();
nocache_headers();

/** This action is documented in wp-admin/admin.php */
do_action( 'admin_init' );

$core_actions_get = array(
	'fetch-list', 'ajax-tag-search', 'wp-compression-test', 'imgedit-preview', 'oembed-cache',
	'autocomplete-user', 'dashboard-widgets', 'logged-in',
);

$core_actions_post = array(
	'oembed-cache', 'image-editor', 'delete-comment', 'delete-tag', 'delete-link',
	'delete-meta', 'delete-post', 'trash-post', 'untrash-post', 'delete-page', 'dim-comment',
	'add-link-category', 'add-tag', 'get-tagcloud', 'get-comments', 'replyto-comment',
	'edit-comment', 'add-menu-item', 'add-meta', 'add-user', 'closed-postboxes',
	'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
	'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
	'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
	'save-widget', 'set-post-thumbnail', 'date_format', 'time_format', 'wp-fullscreen-save-post',
	'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
	'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
	'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
	'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
	'parse-media-shortcode'
);

// Register core Ajax calls.
if ( ! empty( $_GET['action'] ) && in_array( $_GET['action'], $core_actions_get ) )
	add_action( 'wp_ajax_' . $_GET['action'], 'wp_ajax_' . str_replace( '-', '_', $_GET['action'] ), 1 );

if ( ! empty( $_POST['action'] ) && in_array( $_POST['action'], $core_actions_post ) )
	add_action( 'wp_ajax_' . $_POST['action'], 'wp_ajax_' . str_replace( '-', '_', $_POST['action'] ), 1 );

add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1 );

if ( is_user_logged_in() ) {
	/**
	 * Fires authenticated AJAX actions for logged-in users.
	 *
	 * The dynamic portion of the hook name, $_REQUEST['action'],
	 * refers to the name of the AJAX action callback being fired.
	 *
	 * @since 2.1.0
	 */
	do_action( 'wp_ajax_' . $_REQUEST['action'] );
} else {
	/**
	 * Fires non-authenticated AJAX actions for logged-out users.
	 *
	 * The dynamic portion of the hook name, $_REQUEST['action'],
	 * refers to the name of the AJAX action callback being fired.
	 *
	 * @since 2.8.0
	 */
	do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
}
// Default status
die( '0' );

Z tego co wiem to pliki .js odwołują się do tego(domyślnie co 15s) w trakcie pisania posta robiąc backup tego co jest w polu formularza. Na chama zmieniłem wartość 15 na 600 i muszę przyznać, że przynosi to efekty :D

z 24% zrobiło się 8%. Nadal za dużo jak na ten plan hostingowy...(dziennie musiałbym zużywać max 5%). :(

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czyli hosting za slaby na funkcje auto zapisu wordpressa do bazy i/lub cache przeglądarki ;-))) no to albo zmiana hosta albo pozostaje zwiekszenie odstepow lub wylaczeniec auto zapisu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

Czyli hosting za slaby na funkcje auto zapisu wordpressa do bazy i/lub cache przeglądarki ;-))) no to albo zmiana hosta albo pozostaje zwiekszenie odstepow lub wylaczeniec auto zapisu

Nie dobrze... ledwo co po zmianie hosta jestem. :(

Polecicie jakiś pod WP dziennie 2k UU?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

Ewentualnie wyłącz ten cały auto zapis w cholerę i zapisuj sobie draft co jakiś czas.

W wp-config.php dopisałem:

define('WP_POST_REVISIONS', false);

coś jeszcze? Czy to wystarczy?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

przecie to nie to!! od wylaczyles tylko rewizje wpisu, czyli tworzenie kopie przy pozniejszej edycji abys w razie czego mial wglad w poprzednia wersje wyedytowanego wpisu lub mogl cofnac zmiany, to zupelnie co innego ;)

 

to co ci zjada zasoby to bardziej zlozony proces:

- auto szkic wpisu w bazie

- auto kopia wpisu w pamieci cache przegladarki gdybyś sobie zamknal zakladke a auto szkic nie zostal utworzony

- sprawdzanie czy polaczenie z internetem - jak tylko cos bedzie nie tak dostaniesz monit i zablokowane zostana przyciski publikacji

- sprawdzanie czy jestes zalogowany - jak tylko wp wykryje zes anonim to dostaniesz po oczach popupem z formularzem logowania

- sprawdzanie czy przypadkiem nie edytujesz wpisu ktory jest w tym momencie edytowany przez kogos innego

- i chyba jeszcze jeden proces ale nie moge sobie przypomniec

takze czy jest sens to wszytko wylaczac? moze nie wszytko ale czesc z tego jest przydatna, auto kopia w cache przegladarki nieraz uratowala mnie przed pisaniem od nowa, a sprawdzanie neta przed kliknieciem publikacji

tak jak ci podalem wczesniej, skorzystaj z tej wtyczki do heartbeat lub nadpisz akcjami jezeli czujesz sie na silach, z wp-config.php tego nie wylaczysz ale jak juz jestes przy wp-config to mozesz wylaczyc auto aktualzacje bo to tez w tle trybi - na codex.wordpress.org znajdziesz co i jak

Edytowano przez DMatii (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czyli hosting za slaby na funkcje auto zapisu wordpressa do bazy i/lub cache przeglądarki ;-))) no to albo zmiana hosta albo pozostaje zwiekszenie odstepow lub wylaczeniec auto zapisu

Nie ma to jak obiektywne wskazanie problemu. Nie jest to wina słabego hostingu.

 

Czasem wystarczy zoptymalizować/naprawić bazę aby usunąć taki problem. Ciężko jednak coś więcej powiedzieć.

Inne instalacje o takim ruchu nie zużywają aż tyle cpu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

Nie ma to jak obiektywne wskazanie problemu. Nie jest to wina słabego hostingu.

 

Czasem wystarczy zoptymalizować/naprawić bazę aby usunąć taki problem. Ciężko jednak coś więcej powiedzieć.

Inne instalacje o takim ruchu nie zużywają aż tyle cpu.

Dodam tylko, że w wcześniejszej firmie Futurehost zużycie na dokładnie tych samych plikach(jedynie wp-config edytowany) zużycie wahało się w granicach 4-5% z całości - baza+skrypty.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

przecie to nie to!! od wylaczyles tylko rewizje wpisu

 

http://codex.wordpress.org/Revisions

 

 

Revision Options

Limit the number of posts revisions that WordPress stores in the database.

The wp_revisions_to_keep filter allows developers to easily alter how many revisions are kept for a given post.

Alternately, the limit can be set in wp-config.php:

define( 'WP_POST_REVISIONS', 3 );

WP_POST_REVISIONS:

  • true (default), -1: store every revision
  • false, 0: do not store any revisions (except the one autosave per post)
  • (int) > 0: store that many revisions (+1 autosave) per post. Old revisions are automatically deleted.

 

To załatwi sprawę auto dratu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie ma to jak obiektywne wskazanie problemu. Nie jest to wina słabego hostingu.

 

Czasem wystarczy zoptymalizować/naprawić bazę aby usunąć taki problem. Ciężko jednak coś więcej powiedzieć.

Inne instalacje o takim ruchu nie zużywają aż tyle cpu.

 

Nie da się wskazać przyczyny patrząc na obrazek, więc i moja odpowiedź ogólna ;-)) jak nie strona to host, jak nie host to strona (kosmiczna skórka? wtyczki? .....), albo to albo to, bo co innego? co innego jakby tu chodzilo o jakas dystrybucje wp czy jakis wlasny cms to wtedy mozna powiedziec ze pewnie na 80% cos spierdzielone

@pedro jeszcze raz ci napisze, REWIZJE to nie AUTO KOPIE (te w cache przeglądarki) ani AUTO SZKICE a z tego wynika ze to zjada najwiecej zasobow, ale to podobno, byc moze itd. trzeba zbadac strone od srodka i kropka, inaczej mozna wrozyc z fusów

Edytowano przez DMatii (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dodam tylko, że w wcześniejszej firmie Futurehost zużycie na dokładnie tych samych plikach(jedynie wp-config edytowany) zużycie wahało się w granicach 4-5% z całości - baza+skrypty.

 

Najczęstsze tłumaczenie. Najczęściej zupełnie mija się z prawdą. czynników jest wiele, szczególnie przy Wordpressie. Aktualizacje aplikacji, pluginów, skórek, iniekcje szkodników poprzez dziury..

 

Do rzeczy: procentowe odwołania do tego problematycznego pliku admin-ajax.php stanowią 90% wszystkich wywołań plików w tej domenie. Czyli na 10 000 uruchomień plików php, ten uruchamiano 9 000. Tak wyglada to np. dziś i wczoraj, wcześniej najpewniej też. Czy zatem to normalne działanie Wordpressa?

 

http://www.inmotionhosting.com/support/website/wordpress/heartbeat-ajax-php-usage

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Trochę dziwne, bo żeby uzyskać takie zużycie trzeba by mieć cały czas otwartą na wierzchu kartę z edycją posta... :/

 

@Filipsiu: zapodaj access loga z jednego dnia. Zobaczymy jakie IP ładują ten plik.

Edytowano przez likufanele (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

Trochę dziwne, bo żeby uzyskać takie zużycie trzeba by mieć cały czas otwartą na wierzchu kartę z edycją posta... :/

 

@Filipsiu: zapodaj access loga z jednego dnia. Zobaczymy jakie IP ładują ten plik.

Dodam tylko, że strona schowana jest za cloudflare.

Access log: http://wizjerczolgisty.pl/log

CPU Usage: http://wizjerczolgisty.pl/cpu_usage.log

 

Włączone wtyczki(18):

Ajax Edit Comments

Akismet

All In One SEO Pack

Formularze

Custom Login

Easy Spoiler

Jetpack by WordPress.com

Simple Lightbox

TinyMCE Advanced

TwentyTwenty

Twitch Status

WordPress Database Backup

WordPress HTTPS

WP Heartbeat Control

WP Maintenance Mode

WPtouch Mobile Plugin

WP Awatar Użytkownika

YOP Poll

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

obstawiam dwóch winowajców:

pierwszy to Ajax Edit Comments - per user i anonim sprawdza czy user moze edytowac komentarz

 

drugi to Twitch Status - co 30 sekund odpytuje zew serwer o status

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jaki ty masz ten limit skoro wordpress przy 2k UU ma problemy? Tym sposobem to wracamy do stron w html by przypadkiem limitów nie przekroczyć.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Filip Nowacki

obstawiam dwóch winowajców:

 

pierwszy to Ajax Edit Comments - per user i anonim sprawdza czy user moze edytowac komentarz

 

drugi to Twitch Status - co 30 sekund odpytuje zew serwer o status

Wyłączyłem, w czwartek dam znać czy pomogło.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To jaki ty masz ten limit skoro wordpress przy 2k UU ma problemy? Tym sposobem to wracamy do stron w html by przypadkiem limitów nie przekroczyć.

 

Nie zrozumiałeś idei problemu. Codziennie ponad 10 000 razy odpalany jest skrypt, który coś tam robi i zużywa cpu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

Nie zrozumiałeś idei problemu. Codziennie ponad 10 000 razy odpalany jest skrypt, który coś tam robi i zużywa cpu.

 

Ja rozumiem jak najbardziej problem ale chciałem wiedzieć jaki ma limit. To że ajax odświeża skrypt jest również zrozumiałe. Ale obciążenie ma limit którego nie podał dlatego zapytałem. Taka wiedza sie przydaje kiedy ktoś używa takiej a nie innej wtyczki. Zakładając że limit jest mały są dwie opcje podniesienie limitu lub szukanie podobnego rozwiązanie w formie innej wtyczki. Mimo wszystko dalej się to sprowadza do konkretnego parametru. Skoro ktoś ma witrynę o takim ruchu powinien się liczyć że pewne elementy użyte na stronie mogą powodować problemy. Sprawa limitów nakładanych przez firmy to temat rzeka bo co firma to inny wskaźnik i realnie patrząc te same witryny u różnych usługodawców mogą lub nie powodować podobne wskazania.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×