SEOClerks

What happens when your website can't handle viral traffic?



Write the reason you're deleting this FAQ

What happens when your website can't handle viral traffic?

What happens when your website goes viral and your host simply cannot maintain the amount of traffic it suddenly got?
What happens when your website can
Has anyone been in the situation of buying a low budget hosting packages and starting a small website not having really high hopes, just doing basic SEO and starting to write articles doing some social media campaigns but suddenly something starts working as it should and you got huge amounts of traffic coming your way, a lot then your host can handle.

What can you do in such a situation, because time is very important, you won't want people trying to access your website only to be hit by an error of some kind.

I've recently witnessed experienced such an event, a website under our administration got a huge influx of traffic for both organic sources but also a social campaign going viral, the servers got overloaded and the website crashed, our sys admin was going crazy calling the hosting company for an emergency upgrade but everything is moving very slowly because everything happened this weekend and hosting company used by this website doesn't have a 24h customer service in place.

What kind of security measures can one implement to make sure a website doesn't crash when a traffic spike hits all time high? The answer will be a better hosting plan but not everyone is willing to pay for such a server every month just because the website "may" or "may not" go viral at some point.

Comments

Please login or sign up to leave a comment

Join
procoder
Well actually the best solution would be to upgrade your actual server, I understand that they might cost a lot and sometimes it's not worth it, but believe me you'll lose more if your site goes off in that moment when you're getting super traffic. Now, It's not that you're going to lose some traffic count for some minutes, no, you'll lose the trust of your visitors, because nobody would want to visit a site that keeps going off.

However, if you really think that paying for an extra server it's not worth it, another solution you may have is Cloudflare. Cloudflare has an awesome feature called "Always online", which means that your visitors will be able to see your website even if your server is offline and that is possible because this feature create a static cache of your website.

Hope this helps!



Are you sure you want to delete this post?

Lynne
Oh nice answer there Procoder, this is the second time I have seen Cloudflare being recommended and I can see in this instance how it would be very handy.

I will keep that in mind for the day when my websites explode with traffic and go completely viral LOL.

Thanks for that. I agree with you with the cost there, it is really important to make sure you have your visitors trust. It won't do any good having your website down. If you have that much traffic surely you can afford to pay to have your website server upgraded right?



Are you sure you want to delete this post?

eziscript
I have into this kind of situation multiple times, Once you have high traffic you can't just trust your existed host/server, so you start to build a backup incase if there is misshape you can transfer.

First thing i do is move my site to CloudFlare its help me to reduce the load by delivering cache, specially enabling the "Roket engine" at CloudFlare help me reduct server response time and bandwidth usage!. CloudFlare also help you to transfer your website to new server in matter of minutes. just change the IP and you are at new server!

If you don't want to use cloudflare its okay, but in case if you want to change server its take around 24 hours every time you change the server or IP of DNS!

2nd I setup a new Hosting with Cache Server, it could be Varnish or Nginx Proxy !
3rd. Enable MySQL (Database) query cache its reduce the MySQL Server load
4th. Add Cache to HOMEPAGE!
5th. Enable the PHP Based cache on those pages which open alot, you can check by the Google Analytics which page open alot!

That's all i do, and i have currently nearly 100k traffic and i am running 8GB, 8 Core CPU with 1GBPS Shared Connection, and its never go above 20% server usage (1.5 1.5 1.5).

Thanks,



Are you sure you want to delete this post?

Lynne
Hi Cristian, well I have to say that I would love this sort of problem What happens when your website can It would be a nicer problem than struggling to get traffic to my website right?

I have unfortunately not had the pleasure of having such a problem but I would think that yes although it might be a problem for a day or two,especially if it is over a weekend an upgrade shouldn't take too long right?

I am very interested to hear what everyone else says here, you know just in case I ever have such a terrible problem as too much traffic that breaks my hosting LOL



Are you sure you want to delete this post?

idealmike
Oh yes I used to experience this back in the day when I'd get SU and Reddit spikes or would buy traffic from somewhere. What I found is that my site couldn't handle it and basically either ground to a halt or wouldn't load and open at all. That was more in the days before caching was around and there were things like Cloud Flare which can help with that depending on the amount of traffic you're actually getting. Even Cloud Flare can get really laggy sometimes depending on how much traffic your site is getting. It helps if you have a good solid dedicated hosting solution and not some cheap budget shoe-string shared hosting plan. That is something you need to look for in any hosting plan today, Cloud Flare as standard but a hosting plan and solution that can handle spikes in traffic on its own. Most hosts only provide so much bandwidth also, and a big spike of traffic can quickly eat up all that bandwidth. So even if your hosting solution can handle it, your host wont show your site if you run out of bandwidth. You'll have to upgrade your plan or buy some bulk addon again just so your customers aren't seeing "This site hasn't paid its bill and is suspended" notice!

That's never good for your reputation.



Are you sure you want to delete this post?

overcast
I think this is where the CDN are going to be useful. And that's not all CDN can be very handy during the spam attack too. They get rid of the spam and the DDOS issues. I know many sites who switched to CDN and are going to be fine. Not just because of bandwidth sharing but because of how they work with the security issues.



Are you sure you want to delete this post?

vinaya
I have never received viral traffic. I did receive a large traffic during the holiday season, however, my sites were still able to handle that traffic. If you have low diskspace and bandwidth, having a large traffic will make your site down.



Are you sure you want to delete this post?

Corzhens
It happened to the website of my husband’s office. After promoting the new website via email, there were downtimes. And little did they know that the reason was the small bandwidth allocated by the hosting provider. When the allocated bandwidth is consumed, the website goes off the air. It was a good thing that they had noticed that downtime earlier and they upgraded the hosting package to accommodate the influx of visitors to their new website.



Are you sure you want to delete this post?

Kakashi2020
Well if that happens to me then I'll upgrade my hosting package and look for ways of quickly monetizing my site asap.



Are you sure you want to delete this post?

Order Now
Process Time: 0.66442108154297

Possible Duplicate queries found!
MatchCountSQLScript
SELECT * FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='20431'1SELECT q.*, c.seo as CatSEO, c.name as CatName, c.parentid FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='20431'

/opt/clerks-staging/docroot/viewfaq.php 496 () ()

SELECT * FROM seoclerks.members WHERE USERID='134'1SELECT * FROM seoclerks.members WHERE USERID='134'

/opt/clerks-staging/docroot/include/functions/includes/member.php 445 GetAllUserDetails() ()

SELECT * FROM seoclerks.members WHERE USERID=1341SELECT googleplus_profile FROM seoclerks.members WHERE USERID=134

/opt/clerks-staging/docroot/include/functions/main.php 16914 GetGooglePlusProfileFromId() ()

SELECT * FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=20431 LIMIT 51SELECT m.username FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=20431 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM answers a, seoclerks.members b WHERE a.quesid='20431' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc1SELECT a.answer, a.USERID, a.upvotes, a.downvotes, a.ansid, a.parentid, a.combined_votes, a.date_answered, b.username, b.userlevel, b.profilepicture FROM answers a, seoclerks.members b WHERE a.quesid='20431' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc

/opt/clerks-staging/docroot/viewfaq.php 1245 () ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111294 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111294 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111309 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111309 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111314 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111314 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111295 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111295 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111343 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=111343 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=118305 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=118305 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=148668 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=148668 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=149622 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=149622 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=161406 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=161406 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

UPDATE questions SET total_views = total_views + 1 WHERE quesid='20431'1UPDATE questions SET total_views = total_views + 1 WHERE quesid='20431'

/opt/clerks-staging/docroot/include/functions/main.php 1765 update_Faqviewcount() ()

SELECT * FROM questions WHERE quesid!='20431' AND status='1' AND (question like '% website handle viral traffic? %' OR question like '%website%' OR question like '%handle%' OR question like '%viral%' OR question like '%traffic?%') -- ORDER BY RAND() LIMIT 151SELECT quesid, question, seo, userid FROM questions WHERE quesid!='20431' AND status='1' AND (question like '% website handle viral traffic? %' OR question like '%website%' OR question like '%handle%' OR question like '%viral%' OR question like '%traffic?%') -- ORDER BY RAND() LIMIT 15

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM seoclerks.members WHERE USERID='9' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='9' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='7' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='7' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='147' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='147' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='632' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='632' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=20431%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID 1SELECT USERID, username FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=20431%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM categories1SELECT * FROM categories

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() parseRedundantQueriesCache()

select * from categories_software order by name asc1select * from categories_software order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetSoftwareCategories()

select * from categories_wanttobuy order by name asc1select * from categories_wanttobuy order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_wantcategories()

select * from categories_wanttotrade order by name asc1select * from categories_wanttotrade order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_tradecategories()

SELECT * FROM seoclerks.members WHERE USERID='377074.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='377074.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='306632.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='306632.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='23245.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='23245.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='272.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='272.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='589438.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='589438.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='585810.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='585810.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='600657.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='600657.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

select * from categories_faq order by name asc1select * from categories_faq order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetFaqCategories()

Invalid SQL

count(*)sql1error_msg

Expensive SQL

Tuning the following SQL could reduce the server load substantially
LoadCountSQLMaxMin

Suspicious SQL

The following SQL have high average execution times
Avg TimeCountSQLMaxMin