The new EricMartindale.com is an experiment in data aggregation, and might have a few bugs. Feel free to explore, and then provide feedback directly to @martindale.

search results for databases

Tuning Large phpBB3 Forums

One 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!)

0 Replies

Replies are automatically detected from social media, including Twitter, Facebook, and Google+. To add a comment, include a direct link to this post in your message and it'll show up here within a few minutes.

I'm taking the Databases class. It... in reply to

I'm taking the Databases class. It starts on October 10. I might have to start the class while in SE Asia.

0 Replies

Replies are automatically detected from social media, including Twitter, Facebook, and Google+. To add a comment, include a direct link to this post in your message and it'll show up here within a few minutes.

Genesis

Yes, I am damn well aware that this is a stock template. Right now, I couldn't care less. I'm not even posting, really.

Well, GWing is back, but somehow, all of the files in my home directory disappeared, as well as all of my backups. For right now, I've created a simple placeholder page for everyone who just happens to type GWing.net into their address bar.

Now that I think about it, I may just end up redesigning the whole index page anyways. I'm considering using Drupal or something similiar, or just recoding a simple page for the index. I'm going to need to further tie in to the main user database - the phpbb one - to allow a smoother experience.

Now that I'm talking about the forums, I should mention that I have no idea how I put so many things on the board without completely breaking it. I have over 100 installed modifications installed, and I still have a functional forum. Now, don't get me wrong: There are a LOT of bugs... but it's functional. [Insert-puzzled-glee]

I think I will refer to the above insert statement as [IPG] from now on.

0 Replies

Replies are automatically detected from social media, including Twitter, Facebook, and Google+. To add a comment, include a direct link to this post in your message and it'll show up here within a few minutes.

RolePlaying Blog

I've been seriously slacking in getting RPGateway's blog up and running, but I've finally gotten around to re-posting the files and re-connecting Wordpress to the database. Now all I've got to do is to get a couple of our admins (and hopefully, one of our loverly owners) to start posting and managing it.

The idea here is to create a single update page where watchers who don't want to be involved in the site can still read updates from the staff. A buzz can be established, and hopefully, some real momentum can be generated with content that is updated daily. The so-called 'blogosphere' (I cringe too, relax.) is a very powerful force in the tubes today, and I think it's important to at least begin to establish some sort of presence here.

I was recently pointed to Trevor Somerville's 30 days to success, and I'm only reminded that articles are the Queen in a world where daily updates are King. Good luck to Trevor, I'll probably swing by once or twice to check up on his progress and see if he has any useful tips.

I started fiddling with some new posting options again, in particular the email posting. Blogger lets you set up a secret email to which you can send blog posts, at which point they'll automatically be added to your blog. I had a contact set up in my Gmail as of (insert long period of time) ago, and I sent a post to it, but I haven't seen anything of it. It looks like the same email, but... apparently not. I guess I'll be reconfiguring this later.

I've been having great experiences with SEO and RolePlay Gateway, we're rising in rankings rather quickly, even after the domain migration. Many thanks to the folks over at DigitalPoint for my education over the past few months. I'm sure I'll be telling these success stories soon, but right now I have to head off to Winston to run a few service calls.

Peace out!

0 Replies

Replies are automatically detected from social media, including Twitter, Facebook, and Google+. To add a comment, include a direct link to this post in your message and it'll show up here within a few minutes.

New Chapters

After a year and a half working with some of the smartest and most competent engineers I've ever met, it's time for me to part ways with BitPay. I've had the opportunity to be deeply involved in the design, implementation, and deployment of some incredible technologies, but we're turning a page in the story of Bitcoin's rise and it's time to start exploring the new chapter. BitPay continues to paint an incredibly compelling picture as to what the decentralized future looks like – we worked on some incredibly far-reaching and massively impactful ideas, including: - [ChainDB][chaindb], a distributed database backed exclusively by the Bitcoin blockchain. - [Copay][copay], a truly decentralized wallet & identity management platform. - [BitAuth][bitauth], a secure authentication mechanism for peers on the web, using the `k1` curve. - [Impulse][impulse], a method of securing zero-confirmation transactions. - [Foxtrot][foxtrot], a completely encrypted data transmission network. - [Bitcore][bitcore], a library of common software functionality to glue everything together. You might notice a few common themes. Let me point out the two most important. Firstly, that everything here is open source (with the notable exception of ChainDB). Open source, and more importantly [free software][free software], is a very big deal to me. Prior to joining BitPay, I was [open sourcing education][coursefork], [contributing to open source software](https://github.com/martindale), and [speaking on the importance of open source](https://www.youtube.com/watch?v=iuYLWdG-lP0). Some of the things I'm most proud of are the things _other_ people built with the things _we_ gave away – _that's_ the real power of open source. Secondly, that everything here is based on Bitcoin, not some alternative blockchain. BitPay was a firm believer in Bitcoin as the exclusive platform that would secure the post-fiat era, and that belief has held strongly with me before and after my departure. Until a more compelling alternative to Bitcoin emerges, One of the other exciting things to come out of BitPay was the emergence of [DECENTRALIZE][decentralize], which we formed last fall with a few of our fellow employees. DECENTRALIZE has become [an acclaimed content source][cointelegraph:decentralize] in the latest resurgence of decentralized thinking, and now it gets to be a much bigger priority for me. Before I joined BitPay, I'd put a lot of work into [Maki][maki], a framework for making full-stack application development significantly easier. Maki took a bit of a back-burner position while I was focusing on my work at BitPay, so I'll be redoubling my efforts to see that vision through. In fact, I think now's as good a time as any to share that vision. To that end, I'm starting a new project named Fabric. I'd like to entirely eliminate centralized servers on the Internet and catalyze the development of an entirely new class of economic actor. More details soon. As we embark on our next journey, let's always remember the carefully selected input used to create [the Genesis Block][genesis]: > The Times 03/Jan/2009 Chancellor on brink of second bailout for banks [chaindb]: https://bitpay.com/chaindb.pdf [copay]: https://copay.io/ [bitauth]: https://github.com/bitpay/bitauth [impulse]: https://impulse.is/ [foxtrot]: https://github.com/bitpay/foxtrot [bitcore]: https://bitcore.io [decentralize]: https://decentralize.fm [free software]: http://www.gnu.org/philosophy/free-sw.en.html [coursefork]: https://coursefork.org/ [maki]: https://maki.ericmartindale.com/ [cointelegraph:decentralize]: http://cointelegraph.com/news/114496/leaders-in-bitcoin-broadcasting-pandoras-box-is-open-and-theres-no-going-back [genesis]: https://en.bitcoin.it/wiki/Genesis_block

0 Replies

Replies are automatically detected from social media, including Twitter, Facebook, and Google+. To add a comment, include a direct link to this post in your message and it'll show up here within a few minutes.