Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am about to launch a social network that will contain media, blogs, messaging, profiles... etc. The mySQL server will be particularly burden by ajax calls to the db, media bandwidth, and ffmpeg conversions (photo, video, and audio).

So, how do I set up my storage? As far as I have gathered, I should store the database, which is rather vast and complex, on local RAID discs. Then, how should I store all the media for my users? Will NAS kill my site's speed, or does that only matter for the db and anything being queried? Thanks.


migration rejected from Feb 13 '15 at 16:17

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by HopelessN00b Feb 13 '15 at 16:17

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

Probably the best answer I can give you is to get real personal help from someone who knows technology and partner with them to launch your site. A few paragraphs for free on this or any other site will not give you enough information. If you are just gathering that you need RAID for your DB you are years behind what it will take to successfully implement this system. You have way to much to learn to even come close to explaining here...

"MySQL server burdened by ffmpeg conversions"...seriously?

+1 Best advice = get proper advice. Far too many variables. – John Gardeniers Aug 29 '09 at 6:40

If you are only launching, keeping it simple is the best option unless you expect a massive uptake in users.

Make sure all the main urls for images/videos etc are all kept in a config. That way if the load goes up, you can easily drop in another server/s3/CDN and change the urls rapidly.

If the CPU load is high from data conversions, firstly throw MySQL off on its own box. After that you need to start separating the conversing to another box.

Lastly, look at memcache which allows storing database stuff in memory. Can bring HUGE performance gains if used right.


Use a CDN.

The cost is minimal if you don't get the traffic spike you were expecting. The cost is reasonable considering the speed you can deploy it. Once in place you can bring it back in-house using reverse caching. Since you don't know (media conversions on the database?) you'll be able to test new scenarios, reboot the server, swap out servers, etc. while still maintaining a "presence" to users. The front page should always serve quickly no matter what else is running or down in your system(s).

Find someone with a similar web app and higher load and have them consult. A single day from someone who's already been there will teach you more than months asking questions on-line.


Not the answer you're looking for? Browse other questions tagged or ask your own question.