Expert level WordPress support from AWS-certified professional engineers.
Live Chat
24/7
Private Slack Channel
Available on select plans
WhatsApp Support
Available on select plans
Phone
Available on select plans
Frequently Asked Questions
The addition of this new AWS Region enables all organizations to bring lower latency services to their end-users across Africa, and allows more African organisations to benefit from the performance, security, flexibility, scalability, reliability, and ease of use of the AWS cloud. It enables organisations of all sizes to experiment and innovate faster.
AWS Regions meet the highest levels of security, compliance, and data protection. With the new Region, local customers with data residency requirements, and those looking to comply with the Protection of Personal Information Act (POPIA), will be able to store their content in South Africa with the assurance that they retain complete ownership of their data and it will not move unless they choose to move it.
Africa (Cape Town) is the 23rd AWS Region, and the first one in Africa. It is comprised of three Availability Zones, bringing the Global AWS Infrastructure to a total of 73 Availability Zones (AZ).
It’s extremely important for a customer to be able to rely on partners and companies to help them tick boxes in terms of security, migration from on premise to the cloud, complexities of the interface, and most importantly, not only the technical people but also the business entrepreneurs to drive innovation. Below are a few of the many advantages of the new AWS data center in Cape Town
- Serves customers in the new region with low latency
- Reduce costs
- High throughput of automation & DevOps
- Create applications that create infrastructures.
- Reduce time to market. Minimise the time to write the code and get it out into production
- Automate and securely deploy code
- Local companies can utilise the services of expert managed service providers like Web.Eng
The most important example is websites and web applications. This gives the user the perception that the web application is fast and responsive, like a native app. If done right, many things can be accomplished. With that said, higher costs for higher performance is also mitigated with low cost, low latency solutions
Short answer: Yes!
Long answer: We know there are multiple different ways to approach image optimisation, which is why recommend using API or cloud-based plugins where all the image processing happens on remote servers and doesn’t require any local executables to be installed (we disapprove enabling the exec() function for security reasons).
Below is a short list of plugins we recommend our users explore that abide by this approach:
- Smush.it plugin (see this blog post for a deeper rundown)
- EWWW Image Optimizer plugin
- Kraken Image Optimizer plugin
- ShortPixel Image Optimizer plugin
Note: As an alternative, our VPS hosting plans offer a bit more flexibility with a specialized image processing service we can apply by request. This is our specialized image optimizing service built into our technical stack (at no additional fee) designed to optimise your images on the fly. Bypassing the heavy processing upfront that’s generally required with serving images helps us save your storage and bandwidth costs.
All of the various technology features offered in our stack are configured by the Web.Eng team on the customer’s behalf. Not only do we simply enable caching, but prune your environment making custom tweaks to fully augment the benefits of using our platform, catered individually to your WordPress website.
Two of these performance profiting tools are our CDN and Redis Caching services, supported by AWS CloudFront and NGINX. Once cache is set up and functioning properly, the general rule is it can serve two orders of magnitude more of requests per second than PHP while working to conserve the dedicated resources of your Web.Eng VPS.
We will be talking about the main points recommended to optimizing your WordPress for speed and scale with Web.Eng’s system.
The items are not in any specific order, but we have seen if they are generally applied, it makes a huge difference in how fast a site is and how many CPU/memory resources are conserved (ie. scale better).
This overview goes into using terminal to debug and confirm some things like cache, but some commands could be substituted by looking at the requested page header responses via the browser.
This article covers the following topics:
- Page Caching
- XHR request to admin-ajax.php
- Transients Object Caching
- HTTP/2
- Nginx-Only
PAGE CACHING LAYER (MOST IMPORTANT)
This layer primarily involved hitting the page caching stack of our layers.
To confirm, this is simply looking for the X-Cache-Status: HIT header in the page response.
Via command line this would be:
curl -I -X GET http://www.example.com/ | grep -i "HTTP/\|Cache\|Cookie"
After running that command twice, it should give a response like so:
HTTP/1.1 200 OK X-Cache-Config: 0 0 X-Cache-Status: HIT
If it shows X-Cache-Status: MISS or X-Cache-Status: BYPASS then that means some something is causing it to be skipped, usually due to a PHPSESSID cookie being set, like below:
Set-Cookie: PHPSESSID=XXXXXXXXX; path=/ Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/
Try to avoid setting a session cookie when the pages don’t have to be dynamic. A helpful command to find what theme or plugin is causing it is
cd ~/sites/www.example.com/ find ./wp-content/ -type f -name '*.php' -exec grep -H "session_start(" {} \;
STOP DOING AJAX POST/GET REQUESTS TO ADMIN-AJAX.PHP
Upon requesting the homepage or certain pages on the site, there are sometimes plugins or themes which do XHR request to admin-ajax.php
Request URL: /wp-admin/admin-ajax.php
Request Method: POST
Status Code: 200
Under high traffic load, these have a tendency to overload the server resources due to every POST request to it not being cache-able. This means that a dynamic php worker will have to server ever single one of these requests and use up a lot of the servers CPU.
The first thing to do is to find that they are happening, then to locate which Plugin or Theme is hooking into WordPress that displays them.
Our recommended plan of action is to then remove or disable them, as it’s more important for the site to remain up, rather than overloading the resources so no other visitors are able to visit the site.
REDIS OBJECT CACHE
Transients API, say no to MySQL.
This off-loads queries being made into the Redis object store, so it speeds up and helps overall site performance.
We have a custom drop-in plugin replacement which off-loads the WordPress Transient API to make sure these don’t go into the Database. Please contact support if you’d like that installed on a specific site.
HTTP/2 – BECOME ONE WITH IT.
HTTP/2 is an update to the protocol by the Internet Engineering Task Force (IETF). You’ll get a nice performance boost with compatible clients, and anything that doesn’t support it will gracefully fallback to the old protocol. The performance gain is achieved by only requiring one persistent connection to the server in order to load the website’s assets. Other benefits are prioritization of higher resources, header compression, and multiplexing (multiple requests over the same connection).
In order to support HTTP/2, an SSL certificate will need to be installed on your application. Once that’s done you may contact support for further instructions.
NGINX-ONLY
Switching your site to Nginx-only can help alleviate load caused by too many dynamic PHP requests with a built-in pressure-release valve. All Web.Eng WordPress websites are run from the NGINX framework.
HELPFUL TOOLS/COMMANDS
- Pingdom – You can see how long the entire site takes to load; helpful to see which assets (js/images/css) take a while to load.
- Query Monitor – This plugin is useful for finding slow queries on the front and back end. We recommend enabling the plugin as needed.
- NewRelic – (VPS ONLY) We can connect New Relic so you can get some detailed reporting about your application performance.
- (VPS ONLY) To view CPU & RAM live, you can use htop (via SSH)
- Use curl to check the headers of the site:
curl -I -X GET http://www.example.com/
In the header response, `X-Cache-Status: HIT` could be used to verify if that page cache is hit.
For improved, personalized monitoring and insights beyond our proactive 24/7 Website Uptime Monitoring we have a few solutions available. If you’d like to explore any of these options with our experts, just open a support ticket and we can help get you set up properly with a solution that will adhere to your goals.
Custom Monitoring: Monit
Our Custom Monitoring system, Monit, is a Web.Eng-specific service we offer as an add-on compatible with any of our hosting plans.
This supports real-time metrics for overall system health, PHP-FPM, HTTP request stats, and can be customized to receive any type of metric you wish to collect. This be configured to alert you via email, Slack, etc. For current customers, open a ticket for information and pricing.
New Relic Integrations:
We also support integrations with New Relic (Infrastructure & APM), NGINX Amplify, LogEntries, and a few other services. If you would like access to granular monitoring & alerting, these services would also allow you to accomplish this. We can install NewRelic and ensure you VPS is paired correctly with the other aforementioned technologies. You would just need to purchase a license with New Relic and we’ll configure it via a support request.
Yes, we have multiple elevated channels established to meet any level of severity around our customer’s demands. Below are the most prevalent and intimate options available for receiving the highest levels of regard from our stellar support’s service.
Personal Slack Rooms
Dedicated personal Slack rooms are the most connected way to reach our team for greater extended expert service. Customers can choose up to three users to coordinate with our support and DevOps teams during critical onboarding, configuration or outages to create the most ideal solution for taking our distinct, unequaled guidance one step further.
Slack rooms are offered at an additional fee. Ping our sales team for any questions you have in understanding the possibilities and customizations available for your Web.Eng setup.
Custom Monitoring: Monit
Alongside our Slack channels, customers can pair these with Custom Monitoring Node which can be set to configure any unique alert of your choosing. Alerts can be based on CPU / Network / Database / Outages and other business intelligence for monitoring high-value pages directly via email or Slack. Any critical status outages triggered from your personal rules will be logged in Slack offering insights into the assignment of our team that will be working to resolve any presenting matters.
Enhanced SLA
In addition to the above features, our Enhanced SLA promises higher degrees of uptime availability and response times from our support experts. Expressed in the embed page detail the parameters around the precedence this agreement takes over our Standard SLA, including our 100% availability guarantee.
Due to the nature of our architecture being based purely on dedicated AWS EC2 instances, each hosting plan at Web.Eng has a defined and efficient disaster recovery procedure in place. The historical reliability and maturity of Amazon’s infrastructure is partly why we’ve invested so heavily in their breadth of products, enabling us to achieve favorable uptime results for our customers.
Recovery Time & Point Objectives
Our Recovery Time Object and Recovery Point Objective targets can vary based on the selected hosting plan.
RPO = Recovery Point Objective: The point in time for your data set for recovery
RTO = Recovery Time Objective: The amount of time expected to recover from a failure
Each configuration offers a unique recovery procedure and resolution objective depending on the number of web nodes in rotation (whether you’re operating on a single-serve solution or High Availability multi-web node setup). We offer enhanced DR options for an additional cost to meet more strict RTO and RPO goals than what the standard strategies deliver to accommodate your organization’s needs.
Multi-Zone Failover For Your Data
Amazon RDS is used across all Web.Eng plans by default separate from your EC2 instance, so we’re left with your localized file data forming the bulk of a restore. Recovery procedures take up more time on restoring the database side. Since we partition the database onto its own server, this helps greatly minimize that RTO timeline.
The RDS provides automatic failover across multiple Amazon Availability Zones, so no restoration of the database is necessary. Having your data externally stored for automated recovery at any time, this leaves us with your website files which typically see a quick turnaround time to restore.
Sophisticated Server Management
We utilizes a central configuration management system which allows us to track customizations made for individual servers in our environment. Our staff can accurately and quickly replicate a customer’s existing server(s) and port over all site data in the event Web.Eng’s staff deems this necessary. We’re monitoring your VPS 24/7 with immediate alerting to our core DevOps support team to assist in relieving any stress caused to your server.
Additional Recovery Measures
A more simple addition customers can make to improve the stability of their recovery time is provide us with a personal S3 bucket we can route your nightly backups to in a region separate from your VPS to access in the event of a failure. This can help strengthen your backbone occupying a more geographically diverse plan of recovery.
Our architecture and service is designed with the highest regard for your durability, performance and security. We understand the true cost of downtime and what those implications can mean for your business. Talk to our specialists to learn how we can best serve your WordPress needs.
Putting Our WordPress Expertise to Work
In short, we assume the development operations role and we keep your WordPress performant, secure, reliable, maintained and backed up. Our job is to handle the technical aspects of hosting WordPress right. This extends to making updates to both WordPress core and plugins, proactive security and advanced tuning for optimal speed and performance.
View the full details here: Service Level Agreement
Addressing Your Technical Needs
If a problematic issue presents itself from a performance or security angle, we’re on the case to investigate, diagnose and remediate technical issues at any scale of sophistication. We take the proper care and attention others can’t afford to guide customers towards the ideal solutions possible.
Say for example you’re using a plugin that’s bogging down the database with long-running queries. We’ll address it and work with you to find a substitute or simply deactivate it. Our support team is always available 24/7 from multiple channels to ensure fast and effective troubleshooting. Serving-tuning and other critical jobs that fall within the DevOps realm is in our hands to resolve, delivering the level of assurance and security Enterprise-caliber organizations need.
Design & Development Assistance
While there is a large margin of cases we’re glad to lend a helping hand, any assistance regarding cosmetic/functionality changes is on our customer’s list to handle (i.e. rewriting plugins or refactoring your code). In some cases we are able to make minor fixes that address the root culprits of issues with the goal is minimizing your hardware/resource needs. Having said, the appropriate expectation for our customers to follow is hiring a developer to make granular modifications.
If you don’t have an in-house developer to point to, no problem! Our partners over at The Website Engineer would be more than happy to help.
By way of utilizing Amazon Web Services for our data center services, our network is protected through the AWS Shield Standard, equipping our network with the proper enhancements to secure us from common Denial of Service threats and mitigate active attacks.
What Is DDoS?
A distributed-denial-of-service (DDoS) attack is hostile maneuver designed to impede on the normal ebbs and flows of your traffic, targeting either your server, network or service. In essence, a host of internal traffic causing massive congestion and strain on your resources can be damaging to your business.
Protecting WordPress From DDoS Threats
WordPress generally finds its primary risk around DDoS attacks through targeting server resources (such as PHP consuming a large portion of memory or CPU in a small number of requests). With Amazon’s advanced network security group, their default rules filter out the vast majority of typical network-based attacks.
Note: If you’re particularly sensitive to a potential DDoS attack, adding a service like Cloudflare will provide an additional layer of protection that offers specialized hardening pertaining to DDoS threats.
Custom Rate Limiting
Beyond those measures, we can set up custom rate limiting at the NGINX layer on sensitive endpoints to provide cemented protection for the most common application level attacks. We have a dynamic blocker that can be configured for specific traffic patterns across any of our plans.
Redis is in-memory object cache storage (not a query cache) that operates at the WordPress level and available with all of our VPS solutions, free. Redis is a part of our advanced caching umbrella catered towards Optimizing your WordPress Site Performance.
What Is An Object Cache?
An object cache sits between the WordPress application and the database. Once your data is accessed for the first time, it automatically caches that data so any subsequent requests can access that same data quicker, instead of querying your Database several times. Reusing these objects stored in cache is not only computationally inexpensive but lets us avoid making excessive complex queries for fetching that same data.
How Is Objecting Caching Different From Page Caching?
Both page caching and object cache work towards accomplishing the same goal – deliver results faster – only at different stages. Page cache stores the HTML/asset (images/js/css) content to be return to the visitor, so a PHP Worker doesn’t have to re-generate the same content for every visitor. Example: what shows up on their screen when they search domain.com. Object cache stores the serialized PHP objects, so the same queries don’t need to be made again for every PHP function that uses the data. Think: the returned output of a SQL query.
How Redis Improves Performance:
If you’re running a WooCommerce store or membership website, those logged-in sessions are going to bypass page caching and invoke PHP. Object cache helps cut down on the communication between the web server and the database, accelerating the output of those dynamic requests.
Another example where Redis becomes extremely beneficial is if your WordPress site is making external API calls to load specific data. This creates added time for endpoints to respond and retrieve that external data for your visitor. What can use some internal tools accompanied with Redis to minimize the potential for your PHP worker count to build up or adding any additional workers which can use up resources more quickly.
Incorporating Redis On Your Web.Eng Server
Caching is the #1 mechanism we use to improve performance to waive as much added hardware spend as possible. Given there are sane default settings in place, we can be flexible and work with you in fine-tuning that list for optimization purposes as necessary. Redis runs on the same instance as your webserver, configured by our Operations experts. It’s only used by your WordPress site with the data in Redis coming from your WordPress application exclusively. There’s an instance used for PHP only, sessions (if you are using them) and the object cache.
If you’re seeing extended response times and limited scaling for your WordPress website, Redis can be just one of the many benefits Web.Eng can offer you. Chat with our sales team to find out how we can reach your goals together.