We had recently installed that plugin. This problem persists since last 2 weeks. Still, i disabled the plugin but that didn't help.
2016-08-02 20:11 GMT+03:00 Andrei <[email protected]>: > Ok, now try disabling that plugin, then monitor your CPU usage after. > You'll see some obvious improvements if those POST requests seen in ngrep > were in majority related to the strings we searched for. > > On Tue, Aug 2, 2016 at 12:05 PM, Ayberk Kimsesiz < > [email protected]> wrote: > >> Results: >> >> wp-content/plugins/popup-by-supsystic/js/core.js:108: data += >> '&reqType=ajax'; >> wp-content/plugins/popup-by-supsystic/js/core.js:111: >> data['reqType'] = 'ajax'; >> wp-content/plugins/popup-by-supsystic/classes/frame.php:252: >> switch(reqPps::getVar('reqType')) { >> wp-content/plugins/popup-by-supsystic/classes/helpers/recapcha.php:22: >> if(reqPps::getVar('reqType') == 'ajax') { >> wp-content/plugins/popup-by-supsystic/classes/tables/statistics.php:11: >> ->_addField('is_unique', 'text', 'int') // Is stat value >> - unique >> wp-content/plugins/popup-by-supsystic/classes/installer.php:140: >> `is_unique` TINYINT(1) NOT NULL DEFAULT '0', >> wp-content/plugins/popup-by-supsystic/classes/installer.php:148: >> if(!dbPps::exist("@__statistics", "is_unique")) { // Uniqu >> e >> wp-content/plugins/popup-by-supsystic/classes/installer.php:149: >> dbPps::query("ALTER TABLE `@__statistics` ADD COLUMN `is >> _unique` TINYINT(1) NOT NULL >> DEFAULT '0';"); >> wp-content/plugins/popup-by-supsystic/classes/response.php:14: >> return reqPps::getVar('reqType'); >> wp-content/plugins/popup-by-supsystic/classes/uri.php:67: >> if(isset($data['reqType']) && $data['reqType'] == 'ajax' >> ) { >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:12: >> if($d['type'] == 'share' && isset($d['sm >> _type']) && !empty($d['sm_type'])) { >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:13: >> $smId = (int) framePps::_()->get >> Module('sm')->getTypeIdByCode( $d['sm_type'] >> ); >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:16: >> if(isset($d['is_unique']) && !empty($d[' >> is_unique'])) { >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:32: >> 'is_unique' => $isUnique, >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:70: >> return $this->setSelectFields('COUNT(*) AS total >> _requests, SUM(is_unique) AS unique_requests, >> '. $sqlDateFormat. ' AS date') >> wp-content/plugins/popup-by-supsystic/modules/statistics/models/statistics.php:85: >> $data[ $i ]['sm_type'] = framePp >> s::_()->getModule('sm')->getTypeById( >> $row['sm_id'] ); >> wp-content/plugins/popup-by-supsystic/modules/statistics/js/admin.statistics.popup.edit.js:151: >> if(ppsPopupAllShareStats >> [i].sm_type) { >> wp-content/plugins/popup-by-supsystic/modules/statistics/js/admin.statistics.popup.edit.js:152: >> plotData.push([ >> ppsPopupAllShareStats[i].sm_type.label, >> parseInt(ppsPopupAllShareStats[i].total_requests) ]); >> wp-content/plugins/popup-by-supsystic/modules/statistics/controller.php:5: >> $connectHash = reqPps::getVar('connect_hash', 'post'); >> wp-content/plugins/popup-by-supsystic/modules/popup/views/popup.php:11: >> framePps::_()->addJSVar('admin.popup.list', 'ppsTblDataUrl', uri >> Pps::mod('popup', 'getListForTbl', >> array('reqType' => 'ajax'))); >> wp-content/plugins/popup-by-supsystic/modules/popup/mod.php:299: >> $popups[ $i ]['connect_hash'] = md5(date('m-d-Y'). $popu >> ps[ $i ]['id']. NONCE_KEY); >> wp-content/plugins/popup-by-supsystic/modules/popup/js/frontend.popup.js:451: >> , data: {mod: 'statistics', action: 'add', id: popup.id, t >> ype: action, sm_type: smType, >> is_unique: isUnique, 'connect_hash': popup.connect_hash} >> >> >> 2016-08-02 19:54 GMT+03:00 Andrei <[email protected]>: >> >>> Can you copy/paste what you're seeing? As long as you run it from the >>> WordPress docroot, and the plugins/themes folder locations haven't been >>> customized, it should look something like this but with matches from grep: >>> >>> root@aviator [/home/gog/public_html]# egrep -Rn >>> 'sm_type|is_unique|connect_hash|reqType' wp-content/{plugins,themes} >>> root@aviator [/home/gog/public_html]# >>> >>> >>> On Tue, Aug 2, 2016 at 11:39 AM, Ayberk Kimsesiz < >>> [email protected]> wrote: >>> >>>> I'm getting "*no such file or directory*" error. >>>> >>>> 2016-08-02 19:20 GMT+03:00 Andrei <[email protected]>: >>>> >>>>> Ok now just type the following from the wp docroot to find your >>>>> culprit: egrep -Rn 'sm_type|is_unique|connect_hash|reqType' >>>>> wp-content/{plugins,themes} >>>>> >>>>> On Tue, Aug 2, 2016 at 10:58 AM, Ayberk Kimsesiz < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Andrei, >>>>>> >>>>>> Here are the results: >>>>>> >>>>>> T *****:56538 -> ******:8080 [AP] >>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1. >>>>>> Host: *******.com. >>>>>> Accept-Language: tr-tr. >>>>>> User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) >>>>>> AppleWebKit/6 02.1.40 (KHTML, like Gecko) Version/10.0 Mobile/14A5309d >>>>>> Safari/602.1. >>>>>> X-Requested-With: XMLHttpRequest. >>>>>> Accept: application/json, text/javascript, */*; q=0.01. >>>>>> Referer: http://******/. >>>>>> Content-Type: application/x-www-form-urlencoded; charset=UTF-8. >>>>>> Content-Length: 130. >>>>>> Origin: http://****.com. >>>>>> X-Actual-IP: 5.46.70.115. >>>>>> Cookie: >>>>>> pps_show_100=Tue%20Aug%2002%202016%2018%3A50%3A21%20GMT+0300%20%28EEST%2 >>>>>> 9; >>>>>> pps_times_showed_100=1. >>>>>> X-Forwarded-For: 5.46.70.115, 5.46.70.115, 5.46.70.115. >>>>>> Accept-Encoding: gzip. >>>>>> X-Varnish: 39754073. >>>>>> . >>>>>> mod=statistics&action=add&id=100&type=show&sm_type=0&is_unique=1&connect_hash=c1 >>>>>> >>>>>> 532a201e2ee25540c61d3199e0e960&pl=pps&reqType=ajax >>>>>> >>>>>> >>>>>> >>>>>> T *****:56652 -> ******:8080 [AP] >>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1. >>>>>> Host: *****.com. >>>>>> Content-Length: 130. >>>>>> Origin: http://*****.com. >>>>>> X-Requested-With: XMLHttpRequest. >>>>>> User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:46.0) >>>>>> Gecko/20100101 Firefox/46.19. >>>>>> Content-Type: application/x-www-form-urlencoded; charset=UTF-8. >>>>>> Accept: application/json, text/javascript, */*; q=0.01. >>>>>> Referer: https://www.yandex.com.tr/. >>>>>> Accept-Language: en-us,en. >>>>>> Accept-Charset: iso-8859-1,*,utf-8. >>>>>> X-Actual-IP: 78.173.206.179. >>>>>> Cookie: PHPSESSID=br4avjrtmgd0e2j04eoelev4r6; >>>>>> pps_show_100=Tue%20Aug%2002%202016%2018%3A51%3A14%20GMT+0300%20%28Turkey%20Daylight%20 >>>>>> Time%29; pps_times_showed_100=2. >>>>>> X-Forwarded-For: 78.173.206.179, 78.173.206.179, 78.173.206.179. >>>>>> Accept-Encoding: gzip. >>>>>> X-Varnish: 37456291. >>>>>> . >>>>>> >>>>>> mod=statistics&action=add&id=100&type=show&sm_type=0&is_unique=0&connect_hash=c1532a201e2ee25540c61d3199e0e960&pl=pps&reqType=ajax >>>>>> >>>>>> >>>>>> T *****:56630 -> *****.10:8080 [AP] >>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1. >>>>>> Host: *****.com. >>>>>> Content-Length: 130. >>>>>> Origin: http://*****.com. >>>>>> X-Requested-With: XMLHttpRequest. >>>>>> User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:46.0) >>>>>> Gecko/20100101 Firefox/46.8. >>>>>> Content-Type: application/x-www-form-urlencoded; charset=UTF-8. >>>>>> Accept: application/json, text/javascript, */*; q=0.01. >>>>>> Referer: https://google.com.tr/. >>>>>> Accept-Language: en-us,en. >>>>>> Accept-Charset: iso-8859-1,*,utf-8. >>>>>> X-Actual-IP: 46.197.96.35. >>>>>> Cookie: >>>>>> pps_show_100=Tue%20Aug%2002%202016%2018%3A51%3A27%20GMT+0300%20%28T%FCrkiye%20Yaz%20Saati%29; >>>>>> pps_times_showed_100=1. >>>>>> X-Forwarded-For: 46.197.96.35, 46.197.96.35, 46.197.96.35. >>>>>> Accept-Encoding: gzip. >>>>>> X-Varnish: 35061669. >>>>>> >>>>>> Heartbeat plugin didn't fix it by the way. >>>>>> >>>>>> 2016-08-02 18:45 GMT+03:00 Andrei <[email protected]>: >>>>>> >>>>>>> Those admin-ajax.php POST requests won't get cached, and are likely >>>>>>> related to WordPress heartbeats, or plugins. The quickest way to see >>>>>>> what >>>>>>> those requests actually are, which will help you identify the >>>>>>> plugin/theme >>>>>>> option is using ngrep: ngrep 'admin-ajax' -d any dst port 8080 -W >>>>>>> byline -q >>>>>>> >>>>>>> On Tue, Aug 2, 2016 at 9:43 AM, MAGNIEN, Thierry < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> There are known CPU issues due to WordPress HearBeat API, for >>>>>>>> example, or misbehaving plugins. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> See >>>>>>>> http://www.inmotionhosting.com/support/website/wordpress/heartbeat-ajax-php-usage >>>>>>>> for example. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Maybe one of your plugins has some difficulties going through >>>>>>>> varnish. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> If you enable debug on your browser, can you see specific calls to >>>>>>>> /wp-admin/admin-ajax.php that take a very long time with varnish and >>>>>>>> not >>>>>>>> when varnish is disabled ? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thierry >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *De :* varnish-misc-bounces+thierry.magnien= >>>>>>>> [email protected] [mailto: >>>>>>>> [email protected]] *De >>>>>>>> la part de* Ayberk Kimsesiz >>>>>>>> *Envoyé :* mardi 2 août 2016 15:18 >>>>>>>> *À :* Stig Bakken >>>>>>>> *Cc :* varnish-misc >>>>>>>> *Objet :* Re: Varnish CPU Usage >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I used Default.VCL in two different ways. The first with default >>>>>>>> settings and the second with settings customized for Wordpress (either >>>>>>>> case, the CPU usage increases). That is as follows: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Also i couldn't find a Centos 6 installation guide for Prometheus. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> */* SET THE HOST AND PORT OF WORDPRESS* >>>>>>>> >>>>>>>> * * *********************************************************/* >>>>>>>> >>>>>>>> *vcl 4.0;* >>>>>>>> >>>>>>>> *import std;* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *backend default {* >>>>>>>> >>>>>>>> * .host = "SERVER IP";* >>>>>>>> >>>>>>>> * .port = "8080";* >>>>>>>> >>>>>>>> * .first_byte_timeout = 60s;* >>>>>>>> >>>>>>>> * .connect_timeout = 300s;* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# SET THE ALLOWED IP OF PURGE REQUESTS* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *acl purge {* >>>>>>>> >>>>>>>> * "localhost";* >>>>>>>> >>>>>>>> * "127.0.0.1";* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *#THE RECV FUNCTION* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *sub vcl_recv {* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# set realIP by trimming CloudFlare IP which will be used for >>>>>>>> various checks* >>>>>>>> >>>>>>>> *set req.http.X-Actual-IP = regsub(req.http.X-Forwarded-For, "[, >>>>>>>> ].*$", ""); * >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # FORWARD THE IP OF THE REQUEST* >>>>>>>> >>>>>>>> * if (req.restarts == 0) {* >>>>>>>> >>>>>>>> * if (req.http.x-forwarded-for) {* >>>>>>>> >>>>>>>> * set req.http.X-Forwarded-For =* >>>>>>>> >>>>>>>> * req.http.X-Forwarded-For + ", " + client.ip;* >>>>>>>> >>>>>>>> * } else {* >>>>>>>> >>>>>>>> * set req.http.X-Forwarded-For = client.ip;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # Purge request check sections for hash_always_miss, purge and >>>>>>>> ban* >>>>>>>> >>>>>>>> * # BLOCK IF NOT IP is not in purge acl* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # Enable smart refreshing using hash_always_miss* >>>>>>>> >>>>>>>> *if (req.http.Cache-Control ~ "no-cache") {* >>>>>>>> >>>>>>>> * if (client.ip ~ purge || !std.ip(req.http.X-Actual-IP, >>>>>>>> "1.2.3.4") ~ purge) {* >>>>>>>> >>>>>>>> * set req.hash_always_miss = true;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *if (req.method == "PURGE") {* >>>>>>>> >>>>>>>> * if (!client.ip ~ purge || !std.ip(req.http.X-Actual-IP, >>>>>>>> "1.2.3.4") ~ purge) {* >>>>>>>> >>>>>>>> * return(synth(405,"Not allowed."));* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * return (purge);* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> *if (req.method == "BAN") {* >>>>>>>> >>>>>>>> * # Same ACL check as above:* >>>>>>>> >>>>>>>> * if (!client.ip ~ purge || !std.ip(req.http.X-Actual-IP, >>>>>>>> "1.2.3.4") ~ purge) {* >>>>>>>> >>>>>>>> * return(synth(403, "Not allowed."));* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * ban("req.http.host == " + req.http.host +* >>>>>>>> >>>>>>>> * " && req.url == " + req.url);* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # Throw a synthetic page so the* >>>>>>>> >>>>>>>> * # request won't go to the backend.* >>>>>>>> >>>>>>>> * return(synth(200, "Ban added"));* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# Unset cloudflare cookies* >>>>>>>> >>>>>>>> *# Remove has_js and CloudFlare/Google Analytics __* cookies.* >>>>>>>> >>>>>>>> * set req.http.Cookie = regsuball(req.http.Cookie, >>>>>>>> "(^|;\s*)(_[_a-z]+|has_js)=[^;]*", "");* >>>>>>>> >>>>>>>> * # Remove a ";" prefix, if present.* >>>>>>>> >>>>>>>> * set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # For Testing: If you want to test with Varnish passing (not >>>>>>>> caching) uncomment* >>>>>>>> >>>>>>>> * # return( pass );* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # FORWARD THE IP OF THE REQUEST* >>>>>>>> >>>>>>>> * if (req.restarts == 0) {* >>>>>>>> >>>>>>>> * if (req.http.x-forwarded-for) {* >>>>>>>> >>>>>>>> * set req.http.X-Forwarded-For =* >>>>>>>> >>>>>>>> * req.http.X-Forwarded-For + ", " + client.ip;* >>>>>>>> >>>>>>>> * } else {* >>>>>>>> >>>>>>>> * set req.http.X-Forwarded-For = client.ip;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# DO NOT CACHE RSS FEED* >>>>>>>> >>>>>>>> * if (req.url ~ "/feed(/)?") {* >>>>>>>> >>>>>>>> * return ( pass ); * >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *## Do not cache search results, comment these 3 lines if you do >>>>>>>> want to cache them* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *if (req.url ~ "/\?s\=") {* >>>>>>>> >>>>>>>> * return ( pass ); * >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# CLEAN UP THE ENCODING HEADER.* >>>>>>>> >>>>>>>> * # SET TO GZIP, DEFLATE, OR REMOVE ENTIRELY. WITH VARY >>>>>>>> ACCEPT-ENCODING* >>>>>>>> >>>>>>>> * # VARNISH WILL CREATE SEPARATE CACHES FOR EACH* >>>>>>>> >>>>>>>> * # DO NOT ACCEPT-ENCODING IMAGES, ZIPPED FILES, AUDIO, ETC.* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (req.http.Accept-Encoding) {* >>>>>>>> >>>>>>>> * if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {* >>>>>>>> >>>>>>>> * # No point in compressing these* >>>>>>>> >>>>>>>> * unset req.http.Accept-Encoding;* >>>>>>>> >>>>>>>> * } elsif (req.http.Accept-Encoding ~ "gzip") {* >>>>>>>> >>>>>>>> * set req.http.Accept-Encoding = "gzip";* >>>>>>>> >>>>>>>> * } elsif (req.http.Accept-Encoding ~ "deflate") {* >>>>>>>> >>>>>>>> * set req.http.Accept-Encoding = "deflate";* >>>>>>>> >>>>>>>> * } else {* >>>>>>>> >>>>>>>> * # unknown algorithm* >>>>>>>> >>>>>>>> * unset req.http.Accept-Encoding;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # PIPE ALL NON-STANDARD REQUESTS* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (req.method != "GET" &&* >>>>>>>> >>>>>>>> * req.method != "HEAD" &&* >>>>>>>> >>>>>>>> * req.method != "PUT" && * >>>>>>>> >>>>>>>> * req.method != "POST" &&* >>>>>>>> >>>>>>>> * req.method != "TRACE" &&* >>>>>>>> >>>>>>>> * req.method != "OPTIONS" &&* >>>>>>>> >>>>>>>> * req.method != "DELETE") {* >>>>>>>> >>>>>>>> * return (pipe);* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # ONLY CACHE GET AND HEAD REQUESTS* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (req.method != "GET" && req.method != "HEAD") {* >>>>>>>> >>>>>>>> * return (pass);* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # OPTIONAL: DO NOT CACHE LOGGED IN USERS (THIS OCCURS IN FETCH >>>>>>>> TOO, EITHER* >>>>>>>> >>>>>>>> * # COMMENT OR UNCOMMENT BOTH* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if ( req.http.cookie ~ "wordpress_logged_in" ) {* >>>>>>>> >>>>>>>> * return( pass );* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # IF THE REQUEST IS NOT FOR A PREVIEW, WP-ADMIN OR WP-LOGIN* >>>>>>>> >>>>>>>> * # THEN UNSET THE COOKIES* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (!(req.url ~ "wp-(login|admin)") * >>>>>>>> >>>>>>>> * && !(req.url ~ "&preview=true" ) * >>>>>>>> >>>>>>>> * ){* >>>>>>>> >>>>>>>> * unset req.http.cookie;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # IF BASIC AUTH IS ON THEN DO NOT CACHE* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (req.http.Authorization || req.http.Cookie) {* >>>>>>>> >>>>>>>> * return (pass);* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # IF YOU GET HERE THEN THIS REQUEST SHOULD BE CACHED* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * return (hash);* >>>>>>>> >>>>>>>> * # This is for phpmyadmin* >>>>>>>> >>>>>>>> *if (req.http.Host == "ki1.org <http://ki1.org>") {* >>>>>>>> >>>>>>>> *return (pass);* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *if (req.http.Host == "mysql.ki1.org <http://mysql.ki1.org>") {* >>>>>>>> >>>>>>>> *return (pass);* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# HIT FUNCTION* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *sub vcl_hit {* >>>>>>>> >>>>>>>> * # IF THIS IS A PURGE REQUEST THEN DO THE PURGE* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (req.method == "PURGE") {* >>>>>>>> >>>>>>>> * #* >>>>>>>> >>>>>>>> * # This is now handled in vcl_recv.* >>>>>>>> >>>>>>>> * #* >>>>>>>> >>>>>>>> * # purge;* >>>>>>>> >>>>>>>> * return (synth(200, "Purged."));* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * return (deliver);* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# MISS FUNCTION* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *sub vcl_miss {* >>>>>>>> >>>>>>>> * if (req.method == "PURGE") {* >>>>>>>> >>>>>>>> * #* >>>>>>>> >>>>>>>> * # This is now handled in vcl_recv.* >>>>>>>> >>>>>>>> * #* >>>>>>>> >>>>>>>> * # purge;* >>>>>>>> >>>>>>>> * return (synth(200, "Purged."));* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> * return (fetch);* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# FETCH FUNCTION* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *sub vcl_backend_response {* >>>>>>>> >>>>>>>> * # I SET THE VARY TO ACCEPT-ENCODING, THIS OVERRIDES W3TC * >>>>>>>> >>>>>>>> * # TENDANCY TO SET VARY USER-AGENT. YOU MAY OR MAY NOT WANT* >>>>>>>> >>>>>>>> * # TO DO THIS* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * set beresp.http.Vary = "Accept-Encoding";* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * # IF NOT WP-ADMIN THEN UNSET COOKIES AND SET THE AMOUNT OF * >>>>>>>> >>>>>>>> * # TIME THIS PAGE WILL STAY CACHED (TTL)* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (!(bereq.url ~ "wp-(login|admin)") && !bereq.http.cookie ~ >>>>>>>> "wordpress_logged_in" ) {* >>>>>>>> >>>>>>>> * unset beresp.http.set-cookie;* >>>>>>>> >>>>>>>> * set beresp.ttl = 52w;* >>>>>>>> >>>>>>>> *# set beresp.grace =1w;* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * if (beresp.ttl <= 0s ||* >>>>>>>> >>>>>>>> * beresp.http.Set-Cookie ||* >>>>>>>> >>>>>>>> * beresp.http.Vary == "*") {* >>>>>>>> >>>>>>>> * set beresp.ttl = 120 s;* >>>>>>>> >>>>>>>> * # set beresp.ttl = 120s;* >>>>>>>> >>>>>>>> * set beresp.uncacheable = true;* >>>>>>>> >>>>>>>> * return (deliver);* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> * return (deliver);* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *# DELIVER FUNCTION* >>>>>>>> >>>>>>>> *# ##########################################################* >>>>>>>> >>>>>>>> *sub vcl_deliver {* >>>>>>>> >>>>>>>> * # IF THIS PAGE IS ALREADY CACHED THEN RETURN A 'HIT' TEXT * >>>>>>>> >>>>>>>> * # IN THE HEADER (GREAT FOR DEBUGGING)* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * if (obj.hits > 0) {* >>>>>>>> >>>>>>>> * set resp.http.X-Cache = "HIT";* >>>>>>>> >>>>>>>> * # IF THIS IS A MISS RETURN THAT IN THE HEADER* >>>>>>>> >>>>>>>> * # ##########################################################* >>>>>>>> >>>>>>>> * } else {* >>>>>>>> >>>>>>>> * set resp.http.X-Cache = "MISS";* >>>>>>>> >>>>>>>> * }* >>>>>>>> >>>>>>>> *}* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2016-08-02 15:07 GMT+03:00 Stig Bakken <[email protected]>: >>>>>>>> >>>>>>>> Could it be that Varnish is not caching those POST requests, and >>>>>>>> that they are what makes Apache consume a lot of CPU? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On MPMs: with PHP prefork is the safest choice, and it will work >>>>>>>> just fine as long as you have a reasonable config, especially since you >>>>>>>> have Varnish in front offloading the job of shuffling bytes back to the >>>>>>>> users. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> If I were you I'd try to get more data on which requests take a >>>>>>>> long time, some variant of "varnishncsa -F %D".. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> If you're into using Prometheus for metrics, you can try out this >>>>>>>> exporter which will give you a lot of insight into which requests take >>>>>>>> a >>>>>>>> long time to process: >>>>>>>> https://github.com/stigsb/varnish_request_exporter (Prometheus is >>>>>>>> awesome!) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> - Stig >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jul 28, 2016 at 6:57 PM, Ayberk Kimsesiz < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *CPU Monitor: * >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> http://i.imgur.com/5KT1xRu.jpg >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *Apache status:* >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *Srv* >>>>>>>> >>>>>>>> *PID* >>>>>>>> >>>>>>>> *Acc* >>>>>>>> >>>>>>>> *M* >>>>>>>> >>>>>>>> *CPU* >>>>>>>> >>>>>>>> *SS* >>>>>>>> >>>>>>>> *Req* >>>>>>>> >>>>>>>> *Conn* >>>>>>>> >>>>>>>> *Child* >>>>>>>> >>>>>>>> *Slot* >>>>>>>> >>>>>>>> *Client* >>>>>>>> >>>>>>>> *Protocol* >>>>>>>> >>>>>>>> *VHost* >>>>>>>> >>>>>>>> *Request* >>>>>>>> >>>>>>>> *0-0* >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> 0/0/9766 >>>>>>>> >>>>>>>> . >>>>>>>> >>>>>>>> 134.59 >>>>>>>> >>>>>>>> 37 >>>>>>>> >>>>>>>> 0 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.00 >>>>>>>> >>>>>>>> 64.40 >>>>>>>> >>>>>>>> ::1 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> ns1.***com:8080 >>>>>>>> >>>>>>>> OPTIONS * HTTP/1.0 >>>>>>>> >>>>>>>> *1-0* >>>>>>>> >>>>>>>> 14612 >>>>>>>> >>>>>>>> 0/16/9058 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 17.83 >>>>>>>> >>>>>>>> 13 >>>>>>>> >>>>>>>> 1498 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.02 >>>>>>>> >>>>>>>> 53.29 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *2-0* >>>>>>>> >>>>>>>> 10863 >>>>>>>> >>>>>>>> 0/179/9795 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 185.14 >>>>>>>> >>>>>>>> 6 >>>>>>>> >>>>>>>> 1424 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.58 >>>>>>>> >>>>>>>> 60.32 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *3-0* >>>>>>>> >>>>>>>> 13127 >>>>>>>> >>>>>>>> 0/127/9435 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 119.80 >>>>>>>> >>>>>>>> 4 >>>>>>>> >>>>>>>> 1419 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.42 >>>>>>>> >>>>>>>> 56.51 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *4-0* >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> 0/0/9187 >>>>>>>> >>>>>>>> . >>>>>>>> >>>>>>>> 0.00 >>>>>>>> >>>>>>>> 50 >>>>>>>> >>>>>>>> 0 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.00 >>>>>>>> >>>>>>>> 56.60 >>>>>>>> >>>>>>>> ::1 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> ns1.***.com:8080 >>>>>>>> >>>>>>>> OPTIONS * HTTP/1.0 >>>>>>>> >>>>>>>> *5-0* >>>>>>>> >>>>>>>> 14851 >>>>>>>> >>>>>>>> 0/9/8761 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 8.95 >>>>>>>> >>>>>>>> 13 >>>>>>>> >>>>>>>> 1559 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.01 >>>>>>>> >>>>>>>> 57.90 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *6-0* >>>>>>>> >>>>>>>> 14852 >>>>>>>> >>>>>>>> 0/6/8130 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 6.67 >>>>>>>> >>>>>>>> 4 >>>>>>>> >>>>>>>> 1482 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.01 >>>>>>>> >>>>>>>> 51.88 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *7-0* >>>>>>>> >>>>>>>> 14192 >>>>>>>> >>>>>>>> 11/57/8355 >>>>>>>> >>>>>>>> *K* >>>>>>>> >>>>>>>> 72.73 >>>>>>>> >>>>>>>> 0 >>>>>>>> >>>>>>>> 1363 >>>>>>>> >>>>>>>> 106.6 >>>>>>>> >>>>>>>> 0.44 >>>>>>>> >>>>>>>> 52.79 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> *8-0* >>>>>>>> >>>>>>>> 13067 >>>>>>>> >>>>>>>> 0/125/7795 >>>>>>>> >>>>>>>> _ >>>>>>>> >>>>>>>> 121.19 >>>>>>>> >>>>>>>> 13 >>>>>>>> >>>>>>>> 1759 >>>>>>>> >>>>>>>> 0.0 >>>>>>>> >>>>>>>> 0.65 >>>>>>>> >>>>>>>> 68.27 >>>>>>>> >>>>>>>> 176.***.10 >>>>>>>> >>>>>>>> http/1.1 >>>>>>>> >>>>>>>> www.***.com:8080 >>>>>>>> >>>>>>>> POST /wp-admin/admin-ajax.php HTTP/1.1 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Apache error logs don't show anything about CPU. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2016-07-28 19:31 GMT+03:00 Guillaume Quintard < >>>>>>>> [email protected]>: >>>>>>>> >>>>>>>> You seem to have a good hit ratio, are you seeing anything on the >>>>>>>> apache logs that would explain the cpu usage? >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> Guillaume Quintard >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> varnish-misc mailing list >>>>>>>> [email protected] >>>>>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> Stig Bakken >>>>>>>> CTO, Zedge.net - free your phone! >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> varnish-misc mailing list >>>>>>>> [email protected] >>>>>>>> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
