Archives

Jun
22

Tuning Large phpBB3 Forums

No GravatarOne of the sites I own and run (RolePlayGateway) has a pretty large forum, with several customizations and features that I’ve added on to the base install of phpBB3. As time went on, we continued upgrading the servers (moving from GoDaddy shared hosting to GoDaddy virtual dedicated servers, then onward to MediaTemple’s (gs), and now we’re on the second tier of MediaTemple’s (dv) hosting) in an effort to keep the hardware moving as fast as possible.

As I’m sure you know, hardware can be pretty expensive! One month, while on MediaTemple’s Grid Server, we racked up $600 in CPU time overage charges. (Ow.) Now that we’ve moved onward to bigger and better packages, we’re shelling out just about $100 per month for a rock-solid server solution that can be upgraded seamlessly in the future. But since upgrades can only go so far without being prohibitively expensive, I thought it was time to take a look at some of our coding approaches.

Enter memcache, the distributed database caching solution originally designed by LiveJournal to help them deal with massive databases and large volumes of users. DavidMJ has written some shiny ACM modules to help phpBB3 make use of some caching systems, and a memcache module was among them.

That didn’t work so well. It gave about a 50% boost to phpBB3’s performance (which was great!), but we were still choking the server, and ended up upgrading to a bigger and more robust package with MediaTemple. So I started looking into more options, and DavidMJ suggested xcache. So I go grab xcache and compile it, then enabled it in php. Bingo! There’s a 500% boost in our page compile times, and across most of our pages we’re now well under 0.1 second compile times. (With the exception of viewtopic.php, which frequently approaches 2 seconds due to bad coding on my part… this will be fixed soon.)

So now that I’ve got the thirst for speed, let’s take a look at how we’re performing. To do this, use the apache benchmarking tool:ab -n 100000 http://www.mydomain.com/my_page
This will test the URL you specify 100,000 times, and give you some feedback about how the page performs. You’ll end up with something looking like this:

Server Software: Apache/2.2.3
Server Hostname: www.mydomain.com
Server Port: 80
Document Path: /my_page
Document Length: 0 bytes
Concurrency Level: 1
Time taken for tests: 15.30100 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Non-2xx responses: 1
Total transferred: 715 bytes
HTML transferred: 0 bytes
Requests per second: 0.07 [#/sec] (mean)
Time per request: 15030.100 [ms] (mean)
Time per request: 15030.100 [ms] (mean, across all concurrent requests)
Transfer rate: 0.00 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 15030 15030 0.0 15030 15030
Waiting: 30 30 0.0 30 30
Total: 15030 15030 0.0 15030 15030

Some tweaks to the default xcache config that I recommend:

Set the number of caches to one per processor on your server!
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count = 4

This post will be updated as I explore phpBB3 and more server side options. (I wrote part of this post, then stopped writing… and figure I’d publish it a couple days later anyway!)

May
15

Some Feathery Updates and Condolences

No GravatarIt’s been a crazy past couple weeks for me. I’ve been training up for my next fight (AFL 1, May 17, 2008 Elizabeth City, NC) and staying pretty busy at work. In other news, The Grand Tournament 2008 invitations were sent out, and RolePlayGateway will be hosting the event. I had a blast at the SEO - What You Need To Know Meetup in Raleigh, and met some great people (hi Ashley!), and got connected with the upcoming Advanced SEO Meetup (which I’m really looking forward to, Brian - sorry I missed the first one!).

Two of my friends passed away this past week, Brittany Custer and Chelsea Johnson, in two separate events. It’s so sad - both of these girls had an entire life ahead of them.

A few of my friends have also had recent losses, all very devastating in their own way. I don’t think you can possible hope to truly offer solace during times like these, but that is no reason to attempt to provide support and care for their loss.

It’s a very polarizing view compared to what we often feel - especially looking at the age at which people pass away. With Cyclone Nargis and the China Earthquakes, there’s a lot of pain in the world right now. It really makes you wake up out of whatever jaded state you’re in and realize that hey, you’re human. You’re in this with the rest of us, regardless of how much hate you think you have.

I’m not participating in the elections this year. Full stop.

It’s not that I don’t feel like I can make a difference - it’s that I refuse to be involved in what’s going to happen next. I’ll make my mark in my own way, this year. And hey, on a semi-related note, let me introduce you to an independent documentary (which means do your research to verify any of this) that I thoroughly recommend you sit down for 2 hours and watch. Two hours, give it your full attention.

All of that aside, let’s all remember that we’re in this together, like I said before. We need to be loving and supporting each other, through all of our trying times. Grow roots so that you might be able to nourish and feed others in their times of need, as we must do this in favor of our own health. (See The Golden Rule, figure 1.1)

For everyone who has lost someone, remember that everything has a cause and effect. You are still here and play a part in the effect of your loss - it is up to you to determine how you learn from and use the experiences you shared with this person. Be joyous and put these experiences to positive use, sharing and growing in their spirit.

Take refuge amongst your own family and friends - just as you have been there for them, they will be there for you.

May
15

Search Resumes Using Google

No GravatarOooh, someone’s a clever cat. I was thumbing through Google Analytics today (like I do every day), and I was looking at what keywords people were using to find my site. I came across an interesting one:"social media" "search engine optimization" (inurl:resume | intitle:resume)
Either someone is researching competition, or there’s someone looking to hire people for a job they could do themselves. My guess is the former. Whoever you were, good job!

I bet you could do a search like, "lead developer" (inurl:resume | intitle:resume) and get some pretty tasty results. Or, perhaps someone wants to develop a custom search engine that utilizes Google to find highly ranked resumes? There’s some nice and crunchy ideas.

May
05

Forums Are Social: But We Need Stuff

No GravatarThere’s some discussion about how forums are or are not social media, (frankly, I don’t think there’s any question at all) - and it occurred to me the answer of why there is this rift in perception of forums/message boards.

Message boards haven’t changed in almost 25 years. There simply hasn’t been any real innovation - and that’s why there’s so much “real” social media out there that’s exploding right now. The stuff is so radically different from traditional mediums such as forums that everyone is missing the core of what social media is: community engagement and interaction

So, here are some of the things I’d like to see in a forum, and some things that I’ve implemented on some of my own forums (heh, or at least planning to implement):

Trackbacks
It’d be awesome to have the same functionality in a blog post that we have on Wordpress or other blog software - did I give credit to someone? Let me hit the trackback API to make sure there’s a connection between the two posts in the semantic web.

A forum thread is no different than a blog post. It has a topic, a goal, and a discussion pertaining to the original post. Let’s see some of the functionality we found in the current decade put to use!

Native RSS Support
There’s nothing worse than having to write an RSS extension for your forum, and still not have the functionality you want. Give every URL on my forum a /feed, please. This includes forums, threads, posts, users: the whole shebang.

While you’re at it, tell Feedburner to support filtered feeds - a lot of my users don’t want every single post. And I sure as hell don’t want to burn a new feed for every forum. C’mon, let’s meet somewhere in the middle.

Semantic URLs
Blogging software does it, why do we still have URLs on forums that use IDs right there in the URL? What benefit does that have to the user?

Social Profiles
Alright, we’ve got friends and foes lists on our forums, now - but where is the option to make this information public? Why aren’t we displaying a users’ friend list on their profile page by default? What about all their most recent posts and actions, and selected excerpts?

A community can only grow in a stifled manner if interaction between members isn’t made as easy as humanly possible. Current forum software is stuck in the 90’s, with an XHTML wrapper around it. Let’s fix this, and soon - before we all melt.

Real Metrics and Algorithms
Stop using post count as a legitimate metric. This only encourages poor post quality. Let’s see the ability to easily show Flesch-Kincaid, average word count, or something similar. The amount of posts a user has is not a good valuation of their contributions.

Instead, replace these with something more community-driven. Look at Digg for example. There is a solid (questionably) algorithm in place that measures users based on what they’ve submitted and the reactions of other users’ reaction to that content, whether it be a comment or a submission.

Maybe I’m just whining. Maybe I’ve got legitimate desires. What do you think?

P.S.: And good god, phpBB! Why didn’t you include this stuff in your phpBB3 release?!

Apr
29

Flock Tip: Add Services To Your Sidebar (Sorta)

No GravatarSo, Firefox allows you to open favorites in a sidebar - which is great for things like FriendFeed, Google Talk, Twitter, or even Facebook chat. It lets you use a good web service as what essentially becomes an extension for your browser, so you can browse your regular pages while still participating in the conversation.

I recently switched over to the social browser, Flock - with great success and elation. Flock is built from the Firefox codebase, but they are massively more social in what the browser does - drag and drop images, open media feeds, view your friends in their People and Places sidebar, among many other really cool things.

Then there’s Friendfeed - which is a web service that recently took off (but I must say, I’ve been using long before the hype. :D) because it allows you to combine all of your social media connections (Web 2.5, if you will) and even cross-post responses between them (closer to Web 3.0, minus filtering and duplicate content issues…). After putting in a request to Flock’s develpment team to start moving in this direction, I decided to take matters into my own hands.

When you bookmark something in Firefox, you can open the properties of the bookmark and hit a checkbox, “Open this link in the sidebar.” However, this option is not available in Flock (by default). So let’s open our trusty about:config:

Do a filter on “sidebar”, and you’ll find a value called “flock.favorites.loadPageInSidebar” - which is set to false by default. Right click this value, and click “toggle”.

Bingo. Now you will have the checkbox on all your bookmarks that will allow you to open links in your sidebar!

Blogged with the Flock Browser

Tags: , , , , ,