Is a Linode right for this setup?

Hiya.

I currently have a dedicated server running these specs, I would appreciate any recommendations on how to pick a Linode or if Linode is even right for me. I did a test 2gb linode and did some load testing. The linode CPU didn't even sneeze, where as our dedicated under the same load test had trouble.

Peak 500gb data

Monthly Avg 200 gb data and lowering as we just implemented a cdn

Joomla 1.5 site with 70k avg daily pages served up

Mysql db 3,000,000 rows InnoDb, 283.0 MiB as reported by phpmyadmin

Top load avg. .66 .94 1.12

Intel core 2 duo 6600 @ 2.4ghz

3gb ram, 2gb used on avg…but sometimes it goes into swap when traffic peaks and then the server takes a dump

Currently have images and scripts offloaded via cdn

Site is gzipped

Using module caching but no page caching :(

Have done some sql tuning

6 Replies

The first thing you should do is split the web server, application and the database (at the very least, web/app and db) instead of having everything on one box. You'll have a much easier time tuning for performance and scaling that way. To answer your question: the Linode infrastructure can handle your site no problem.

70k hits a day average if served evenly across the day is less than 1 request a second a Linode 512 can handle that. What's your peak concurrent traffic? Also on another note Joomla 1.5 is reaching (or has reached the Joomla site's a bit unclear) end of life, if you're moving hosts you might want to look at upgrading while you're at it.

@limitedquantities:

The first thing you should do is split the web server, application and the database (at the very least, web/app and db) instead of having everything on one box. You'll have a much easier time tuning for performance and scaling that way. To answer your question: the Linode infrastructure can handle your site no problem.

Hey LQ

Thanks for the quick response…I may be diving in over my head here, but I'm not sure I understand why a web/app and db split is better. I mean, I've read that it is, and I believe you that it is, but as a newb I don't know how I would pick what size linode to host a separate mysql box

I read this:

"Designating a separate server to be used solely by MySQL will allow the application's web server to serve content more efficiently, while the database server will be able to respond more quickly"

from the linode library http://library.linode.com/databases/mys … sql-server">http://library.linode.com/databases/mysql/standalone-mysql-server

and I read this:

http://bgies.com/index.php/programming/ … l-database">http://bgies.com/index.php/programming/10-configuring-mysql/23-optimizing-your-mysql-database

and then this:

http://www.databasejournal.com/features … iables.htm">http://www.databasejournal.com/features/mysql/article.php/3367871/Optimizing-the-mysqld-variables.htm

So my question is, could you point me in the right direction on how to size my lindoe for mysql server? I'd be happy to learn, not asking for someone to do if for me…I just don't know where to get started.

Thanks again

-j

@obs:

70k hits a day average if served evenly across the day is less than 1 request a second a Linode 512 can handle that. What's your peak concurrent traffic? Also on another note Joomla 1.5 is reaching (or has reached the Joomla site's a bit unclear) end of life, if you're moving hosts you might want to look at upgrading while you're at it.

Hi obs, thanks for the thoughtful response…this community is pretty encouraging.

Ok, so we had a 1GB Xen vps originally and it went down all the time. Our host suggested and moved us to a 3gb dedi. I would love to tweak it so it could run on a 512 or even a 2 Gb linode, would save me a bit of cash

I'm not sure how I would measure my peak concurrent traffic. I did look at my webalizer stats and i had peak 92K pages/day 7K visits/day. Then there are hits, which I don't think are quite the same…but that is at 260K/day. Any tips on concurrent traffic measurement would be a huge help ie command line stuff or something that I would install

I did log in and check top… 1.17, 2.98, and 4.01 oh dear god it's gonna crash tonight

Right now it's php-cgi and mysqld using 50-90% of the dual core CPU while only 1.5 of 3gb of RAM is in use.

As far as J 1.5 goes, we're kinda stuck with it for at least another year. we can't afford to convert all of our paid components to 2.5 at this time. The idea is to save some money on server bills, tune the linode to handle more traffic, sell more ads, and with the proceeds, rebuild the site in 2.5 in a year or so.

When I used a web based load testing tool on our trial 2gb linode, the CPU didn't even flinch, but the site did not load as fast as our current dedi server. (on a scale of 1-100, the linode stayed at 50 with up to 50 concurrent users. The dedi was at < 10 until it got to around 30 users and then rapidly spiked until it almost crashed from 30-40 users.)

I don't trust my current web host to offer me advice on how large a server to purchase (bigger is always better) so that's why I'm turning to linode as a DIY solution. however, if there was a way to pay someone to take a look at our setup, make a recommendation, setup the linode and tune it…that would be BOSS. Not sure if that's a $100 job or a $1000 job. At this point everything our 2 person team has done is self taught.

@jkoce:

@limitedquantities:

The first thing you should do is split the web server, application and the database (at the very least, web/app and db) instead of having everything on one box. You'll have a much easier time tuning for performance and scaling that way. To answer your question: the Linode infrastructure can handle your site no problem.

Hey LQ

Thanks for the quick response…I may be diving in over my head here, but I'm not sure I understand why a web/app and db split is better. I mean, I've read that it is, and I believe you that it is, but as a newb I don't know how I would pick what size linode to host a separate mysql box

I read this:

"Designating a separate server to be used solely by MySQL will allow the application's web server to serve content more efficiently, while the database server will be able to respond more quickly"

from the linode library http://library.linode.com/databases/mys … sql-server">http://library.linode.com/databases/mysql/standalone-mysql-server

and I read this:

http://bgies.com/index.php/programming/ … l-database">http://bgies.com/index.php/programming/10-configuring-mysql/23-optimizing-your-mysql-database

and then this:

http://www.databasejournal.com/features … iables.htm">http://www.databasejournal.com/features/mysql/article.php/3367871/Optimizing-the-mysqld-variables.htm

So my question is, could you point me in the right direction on how to size my lindoe for mysql server? I'd be happy to learn, not asking for someone to do if for me…I just don't know where to get started.

Thanks again

-j

The (grossly simplified) reason you wanna split them is so the processes (web, database, application) aren't fighting for system resources.

Let's say you have one server, quad-core, 3GB of RAM and one hard drive. If you're running your web server, db and application off that one server, then your processes are "fighting" for that one CPU and that one hard drive.

If you spread that between three servers, each with quad-core, 1GB of RAM and one hard drive, you basically have three times the processing power and I/O available.

For databases, the main reason is I/O as that's generally what bottlenecks them. If your database is doing intensive reads/writes and on top of that you have a web server/application that serves static files, writes to logs, whatever, than the head in the hard drive has to be moving all the time across several sectors to do these operations and that just kills performance.

For the linode sizes, that depends. You'd have to check how much resources are used by your web server, application and database and then split them to linodes of various sizes accordingly. Generally, the application and/or database is what's gonna be doing the heavy lifting so a basic linode with 512MB would be fine for your web server especially considering how much traffic you get.

One thing to keep in mind is that Linode's can be resized trivially easily. Basically it's a button in the linode manager, which causes your linode to be copied to another host in the same DC and then booted on the new machine. Total time to copy is just a few minutes to copy the data from disk to disk, and all the payments are obviously pro-rated.

If uptime is critical but you desperately need more RAM, another option is to add RAM in-place. This still requires a reboot, but not a move; you can get 1024MB of RAM on your 512MB linode in seconds rather than minutes. It's not cost-effective because it costs the same as a 1024 linode without the other benefits a 1024 gives, but it can let you do a RAM upgrade faster if it's really critical.

Generally the advice to people setting up a new linode is to pick what they think is appropriate (or a bit smaller even) and then resize if it turns out to not be right.

When setting up your linode, you'll want to use either very little or no swap; if your linode is relying on swap, anything you try to do that requires swapping will be orders of magnitude slower. It's OK to put a tiny amount of swap for stuff that's well and truly inactive and unused, but the safer bet is just to have no swap at all.

A good piece of advice is, as was mentioned, splitting the web and database servers. The database server can/should be dedicated (in the sense that nothing else is on it). Deploy a fresh and empty linode (say a 1024 or 2048), install mysql, put a config file on it intended to give it most of the RAM on the system (still want some free for disk cache), and point your web/application server (in the same datacenter) at it. Generally you never want your database and application server in different physical places (like different datacenters) as this can cause large performance issues unless your application is specifically designed for it.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct