- Nuance DragonDrive – Voice Recognition Optimized for Automobiles – Dragon Drive offers drivers personalized access to content and services in the car through deep voice integration, while ensuring seamless connectivity and end-to-end delivery of all services.
- Leverage the Sencha Touch Class System and more in your Node.js app – For those of you who love Sencha Touch as much as we do, we are pleased to announce the immediate availability of Touch Node – a Node.js module that will enable you to leverage your knowledge on the back-end as well as the client.
- BOWER: A package manager for the web – yum/apt-get for the web – Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management, while exposing the package dependency model via an API that can be consumed by a more opinionated build stack. There are no system wide dependencies, no dependencies are shared between different apps, and the dependency tree is flat.
- The Little Book Of Modern Front-end Tooling #nodejs – A free open-source book introducing you to the world of tooling for modern web applications.
- cue.language – Java library that provides the basic natural-language processing capabilities – A small Java library for simple text analysis – counting strings, identifying languages, and removing stop words.
- Open Source REST API for Mobile Enterprise Application Development – Backend as a service (BaaS) – Our REST API with JSON objects provides the perfect backend for mobile applications written in either HTML5 or native client technologies like iOS, Windows 8, and Android. More backend-as-a-service
- 15 hot programming trends — and 15 going cold – What follows is a list of what's hot — and what's not — among today's programmers. Not everyone will agree with what's A-listed, what's D-listed, and what's been left out. But that's what makes programming an endlessly fascinating profession: rapid change, passionate debate, sudden comebacks.
- Red Hat and the CentOS Project Join Forces to Speed Open Source Innovation – Red Hat, Inc, (NYSE: RHT), the world's leading provider of open source solutions, and the CentOS Project today announced they are joining forces to build a new CentOS, capable of driving forward development and adoption of next-generation open source techn
- The Four Stages of Disruption – While I was speaking with some entrepreneurs recently on the topic, the question kept coming up: “If we’re so aware of disruption, then why do successful products (or companies) keep getting disrupted?”
- Using WebStorm to maintain a Jekyll site – I've only covered a few features of WebStorm, the ones that I've found I'm using mostly on a daily basis to work with Jekyll / GitHub pages, but obviously as Web IDE it supports a ton of other things such as JavaScript, LESS, CSS, et al.
- The Science of Choosing EC2 Reserved Instances – In this talk, Cloudability VP of Product Development Toban Zolman walks you through the most common scenarios for RIs, shows you how to make the best possible decisions for RI purchases, and how to significantly reduce the time needed to make those decisio
- 7 Ways to be a Better Programmer in 2014 – Programming – Coders make resolutions, no? If your to-do-better list is still empty, consider these ideas from other programmers to put to use in the New Year. Even the smartest folks have room to grow. The following excerpts are contained in the book 97 Things Every Pro
- How Netflix Reverse Engineered Hollywood – To understand how people look for movies, the video service created 76,897 micro-genres. We took the genre descriptions, broke them down to their key words, … and built our own new-genre generator.
- GWT.create Conference – Presentation Slides – Presentation Slides from the largest event about GWT in 2013 with 2 days and more than 60 presentations.
- Why I’m interested in Bitcoin – Chris Dixon – I believe the only way the technology industry can offer meaningfully improved financial services is by building new services that don’t depend on incumbent companies. Bitcoin is a serious proposal for dramatically improving the payments industry. There a
- Koa – next generation web framework for node.js – Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
- Jackson – Unmarshall to Collection/Array – Mapping json arrays to java collections is one of the more common tasks that Jackson is used for, and these solutions are vital to get to a correct, type-safe mapping.
- Enterprise In 2013: Enterprise Ascends Into The Cloud – Enterprises ascend, spies abound and drones descend. A look back at the the enterprise in 2013.
- Why OpenStack Needs Red Hat – ReadWrite – OpenStack has a lot going for it, but not leadership. Red Hat may change this.
- The Decline of IE and Firefox – Windows and IE are dying under the assault of iPads and other tablets from the left, and Chromebooks from the right. This is not surprising, or even news to people who spend a lot of time in the tech world. What surprised me recently was how precipitous th
- Ketosis – advantaged or misunderstood state? – In part I of this post I will see to it (assuming you read it) that you’ll know more about ketosis than just about anyone, including your doctor or the majority of “experts” out there writing about this topic.
Tag Archives: centos
Links for October 21st through October 25th
- WhiteDB is a lightweight NoSQL database library written in C, operating fully in main memory. – WhiteDB is a lightweight NoSQL database library written in C, operating fully in main memory. There is no server process. Data is read and written directly from/to shared memory, no sockets are used between WhiteDB and the application program.
- Google: Our Robot Cars Are Better Drivers Than Puny Humans | MIT Technology Review – Data gathered from Google’s self-driving Prius and Lexus cars shows that they are safer and smoother when steering themselves than when a human takes the wheel, according to the leader of Google’s autonomous-car project.
- Seagate just reinvented the disk interface using Ethernet, TCP/IP, Protocol Buffers, and key-value objects – Seagate just reinvented the disk interface using Ethernet, TCP/IP, Protocol Buffers, and key-value objects
- Microsoft Surface Pro 2 review from gdgt – With the Surface Pro 2, Microsoft hasn't changed much — it kept the study build and sharp display, adding a new kickstand and improved battery life. But, despite all it has going for it, the Surface Pro 2 is still a hybrid device that isn't going to suit everyone.
- Offline.js – Handle your users losing their internet connection like a pro – Offline.js is a library to automatically alert your users when they've lost internet connectivity, like Gmail. It captures AJAX requests which were made while the connection was down, and remakes them when it's back up, so your app reacts perfectly.
- Technology Change: The journey from .NET to Scala – There are now several dev teams at Empathica working on Scala projects. Tool chains are being developed. Coding standards are being established and enforced. Libraries are being standardized across our projects. It’s starting to return to a comfortable
- LinkedIn Intro: Doing the Impossible on iOS | LinkedIn Engineering – Similarly, Intro’s approach of proxying IMAP is a novel way of delivering software to users. It operates at the limit of what is technically possible, but it has a big advantage: we can enhance the apps you already use. Of course the idea isn’t limited to
- Webinar replay: Spring Boot – Simplifying Spring for Everyone – n this webinar Phil Webb will demonstrate how Spring Boot can take you from zero to Spring with minimal fuss. We will look at how you can rapidly prototype Spring applications using Groovy, and how Spring Configuration in Java applications can be radically
- Debian/Ubuntu extend the dominance in the Linux web server market at the expense of Red Hat/CentOS – Debian has been the most popular Linux distribution on web servers for almost two years when it took over rank #1 from CentOS. Now CentOS lost another rank to Ubuntu, giving Debian-based distributions a solid lead over the Red Hat camp.
- Linux is king *nix of the data center—but Unix may live on forever – Unix servers hit lowest market share ever, but they still have a long future.
- How a flawed deployment process led Knight to lose $172,222 a second for 45 minutes – The tale has all the hallmarks of technical debt in a huge, unmaintained, bitrotten codebase (the bug itself due to code that hadn’t been used for 8 years), and a really poor, undisciplined devops story.
- How to balance maintenance and IT innovation via @robcrussell – Many IT leaders admit their spending is too heavily weighted toward keep-the-lights-on projects. Here's how to tip the balance.
- Microsoft, the sleeping giant of the cloud – With its vast portfolio of software and billions of dollars in data center infrastructure investment, Microsoft stands poised to rule the cloud
- Learn Haskell Fast and Hard – A very short and dense tutorial for learning Haskell. – A very short and dense tutorial for learning Haskell.
Links for November 30th through December 3rd
- The death of Steve Jobs: Steve Jobs and America’s decline | The Economist – There are lots of things it could do to improve the ability of and incentives for American companies and workers to innovate and grow, whether it’s taxing fossil fuels, giving more green cards to foreign scientists and engineers or simplifying the tax code. These days, however, that seems a fantasy compared to more prosaic demands such as, don’t shut down the government, starve critical government agencies of funds or default on the national debt.
- cmdln.org (a sysadmin blog) » Blog Archive » Install git on CentOS cpanel server – cpanel has blocked all perl packages from being installed or updated because they don’t want updates to break or conflict with their packages. Thankfully yum provides a nice one time workaround for this kind of situation.
- Niklas’ Blog: Java 7: Project Coin in code examples – This blog introduces – by code examples – some new Java 7 features summarized under the term Project Coin. The goal of Project Coin is to add a set of small language changes to JDK 7.
- Moving from SVN to Git in 1,000 easy steps! « Code as Craft – This past summer we completed a project that spanned several months of planning and preparation – moving our source control from Subversion to Git. The code that runs our search engine, front-end web stack, support/admin tools, API, configuration management, and more are now stored in and deployed from Git. We thought some of you might find our approach migrating an 80-100 person engineering team interesting and possibly instructive.
- A Look at the NoSQL Landscape | Javalobby – Take a look at the current landscape of NoSQL stores and figure out why you might need NoSQL in this recent podcast where Bruce Elgort talks with Mark Myers from the London Developer Co-op.
- scribe-java – The simple OAuth Java lib! – Welcome to the home of Scribe, the simple OAuth Java lib!
- ql.io – A declarative, data-retrieval and aggregation gateway for quickly consuming HTTP apis – ql.io combines SQL, JSON, and a few procedural style constructs into a compact language. Scripts written in this language can make HTTP requests to retrieve data, perform joins between API responses, project responses, or even make requests in a loop. But note that ql.io's scripting language is not SQL – it is SQL inspired
- InfoQ: SpringOne 2GX Keynote: Next Generation Applications – Ben Alex along with a SpringSource team present the future of mobile applications, authorization, data, and application architecture as seen by VMware.
- InfoQ: Scala+GWT Brings Scala to the Browser, New Documentation Site and Scala Days 2012 Announced – Grzegorz Kossakowski has recently released the third milestone version of Scala+GWT. Scala+GWT allows you to write Scala code and then run it in the browser by compiling it to JavaScript via Google's Web Toolkit. This allows you to write statically checked code but with less boilerplate than Java requires.
- Running Ext GWT 2 and 3 Together | Learn | Sencha – As a migration strategy, both Ext GWT 2 and 3 can be used at the same time. This allows an application to be upgraded to v3 over time, rather than all at once.
- Move The Web Forward | Guide to getting involved with standards and browser development – Whether you're a talented web developer, web-slinging since the days of tables and font tags, or you're a hobbyist hacker, there are a number ways for you to give back. Below, we list some of the ways that anyone can contribute back to the web platform.
Daily del.icio.us for October 8th through October 11th
- InfoQ: Cascading – Data Processing API for Hadoop MapReduce – Cascading is a new processing API for data processing on Hadoop clusters, and supports building complex processing workflows using an expressive API as opposed to directly implementing Hadoop MapReduce algorithms.
- InfoQ: Open Source WS Stacks for Java – Design Goals and Philosophy – Among the most popular open source stacks for implementing a SOAP/WS-* based solution in the Java space are Apache Axis2, Apache CXF, Spring Web Services, JBossWS and Sun’s Metro. I posed a number of questions to the lead developers of these stacks about their design goals, their approach towards Java and Web services standards, data binding, accessing XML, interoperability, REST support, and framework maturity. As was to be expected, the results revealed many similarities and some noteworthy differences
- Enterprise Java Community: Axis, Axis2 and CXF: Surveying the WS Landscape – Axis2 has been around longer but CXF is catching up quickly. My recommendation is this: If multilanguage support is important, Axis2 is the clear choice. If you care about an implementation focused on Java with tight integration into projects like Spring, CXF is a better choice, particularly for embedding web services inside of other programs
- Wikipedia adopts Ubuntu for its server infrastructure – Wikimedia's move to Ubuntu is part of an effort to simplify administration of the organization's 400 servers, which previously ran a mix of various versions of Red Hat and Fedora.
- Sun Microsystems: A Lesson in Failed Cosmetic Surgery – Bits Blog – NYTimes.com – Sun Microsystems, one of the world’s largest server and software makers, finds itself in an awkward position: It might soon have enough cash to buy all of its stock and go private.
- Red Hat boosts open source SOA | InfoWorld | News | 2008-10-08 | By Paul Krill – Red Hat is expanding its open-source JBoss SOA platform with the unveiling Wednesday of JBoss Enterprise SOA Platform 4.3 and JBoss Operations Network 2.1. Enterprise SOA Platform supports small-integration projects to enterprise-wide SOA integration. It features open-source projects like JBoss ESB, JBoss JBPM, and JBoss Rules
- The Financial Crisis, as Explained to My Fourteen-Year-Old Sister — The Bygone Bureau – The following is an actual conversation I had with my younger sister, Olivia. She likes to draw, play World of Warcraft, and now, she’s the only fourteen-year-old girl who understands the U.S. economic crisis.
- Real Time Economics : Sign of the Times: National Debt Clock Runs Out of Digits – The national debt clock, the unofficial tracker of the federal deficit maintained by the Durst Organization in New York, has reached its limits. Last month, as the national debt exceeded $10 trillion for the first time, the clock ran out of digits to record the number.
- RIM’s Impressive BlackBerry Storm – BusinessWeek – RIM has struck again, this time by eliminating the physical keyboard from its new BlackBerry Storm smartphone. The Storm will be available later this fall from Verizon Wireless in the U.S. and from Vodafone (VOD) in Europe and parts of Asia.
- Motorola’s Linux strategy evolves with Android – Reports have emerged indicating that Motorola is hiring developers with Java and Android expertise in preparation for launching a major mobile initiative on top of Google's software platform
Daily del.icio.us for July 27th through August 5th
- Ext JS – Ext 2.2 Released – We are pleased to announce the release of Ext 2.2, a fully backwards-compatible maintenance release of Ext. This is a recommended upgrade for all Ext 2.x users as it not only adds many new components and examples, but also provides a host of important bug
- InfoQ: FXStruts: Developing Flex-Friendly Struts Application – FxStruts is a free open source library that provides the same functionality as bean:write except that the output is in AMF or XML format. Simply point it to any plain Java object and you get Flex friendly AMF or XML output with ActionErrors and transactio
- Best enterprise open-source applications announced | The Open Road – The Business and Politics of Open Source by Matt Asay – CNET News.com – Infoworld does an annual review of the best enterprise open-source applications, called the BOSSies, and just announced the 2008 winners. An Infoworld editorial team makes the selections, so this isn't a matter of open-source projects rallying the troops
- My experience of coding a GWT webapp (~900 classes, ~20 GWT modules) – Google Web Toolkit | Google Groups – We put our GWT-based job site (http://www.careercommons.com) in production on Monday. This is a summary of my experience coding the whole thing in GWT. Not sure how useful this is for other people, but here it goes:
- Adam Bien’s Weblog : Useful Explanation: “iBATIS, Hibernate, and JPA: Which is right for you?”, Strange Conclusion – iBatis is the most powerful, but not that simple. It comes with highest amount of XML-configuration, which has to be maintained during the whole lifecycle
- Greg Luck’s WebLog: RESTful, resource-oriented caching now available in ehcache-server – I have just released ehcache-server-0.3, which includes a fully functional RESTful, resource-oriented implementation. The standalone-server has also been updated to 0.3.
- Coding Horror: Quantity Always Trumps Quality – When it comes to software, the same rule applies. If you aren't building, you aren't learning. Rather than agonizing over whether you're building the right thing, just build it. And if that one doesn't work, keep building until you get one that does.
- Alex Miller – Java 7 Prediction Update – I just realized due to a forum thread that it’s been about 7 months since I posted my Java 7 Predictions. So, it seems like a good time to update those predictions
- Neil Peart – Neil Peart’s Top 10-Plus Fills – One of the reasons Neil Peart is so popular with other drummers is his creativity and how he approaches his fills.
- Lightstreamer on Firefox 3 – In this video I will show the seamless behavior of the "engine migration mechanism". Then, I will increase the number of tabs concurrently displaying real-time data. I will stop at 10 tabs, due to the CPU consumption of the screen recording software.
- Toyota Announces Segway Killer: The Winglet Personal Transporter | Gadget Lab from Wired.com – Toyota has come up with a vertical, mechanized scooter or personal transporter, intended to help people move about in public areas. Called the Winglet because of its fleet nature, it is the first gadget to duplicate the navigation system of Segway
- Case Study: Performance Tuning a Web Shop (Part 1) | Architects Zone – We found the evidence by using tools, most importantly: JMeter for load testing, JAMon for performance monitoring and JARep for performance reporting. With JMeter we can simulate user behavior and put a realistic load on the system. The JMeter test should
- Raible Designs | [OSCON 2008] Web Frameworks of the Future: Flex, GWT, Grails and Rails – Below is the presentation I'm delivering at OSCON today. Unfortunately, I had to remove slides on GWT and Flex to fit w/in the 45 minute time limit.
- Linux News: Applications: With New Alfresco App, Enterprise Content Management Takes the OSS Road – Alfresco Software announced Thursday the availability of Alfresco Labs version 3, an open source alternative to Microsoft's enterprise content management
- SEC OKs websites and blogs for Reg. FD | IR Web Report – UNDER certain circumstances, companies can rely on their websites and blogs to meet the public disclosure requirements under Regulation FD, according to new guidance unanimously approved by the US Securities and Exchange Commission today
- zeromq: Fastest. Messaging. Ever. – Our mission with ØMQ ("ZeroMQ") is to build the fastest messaging ever. The way to get performance is to optimise the whole software and hardware stack together. So, we are developing ØMQ closely with major hardware firms
- iamdeepa on flex » Blog Archive » Where did the FlexBuilder Advanced Constraints UI go? – For Flex 3, the Advanced Constraints feature introduces the concept of ConstraintColumn and ConstraintRow objects that can be used to partition up absolute positioning containers. We broadened the constraint syntax to allow for controls to be constrained
Daily del.icio.us for January 19th through January 20th
- Memcached 1.2.2 on RHEL/Centos using DAG rpms | MDLog:/sysadmin – This article will show how you can easily install memcached 1.2.2 and libevent 1.3b using DAG/rpmforge repository.
- Collaboration and Content Strategies Blog: Oracle and BEA: A Day of Reckoning for Portal Implementers – Despite Alfred Chuang’s statement during the analyst call that “our two businesses are a natural strategic fit”, I would say that their two businesses are instead natural competitors for much of what BEA offers.
- The GigaSpaces Blog » Blog Archives » An Open Letter to BEA WebLogic Customers – A single product that handles messaging, business logic and transactional data through an open-source, commonly used programming model, so your developers can focus on what they do best: quickly deliver new applications and functionality to your business
- Trial By Fire: Windows Vista: Past Its Due Date Already – You become so involved in the idea of the product that you forget about what it’s like to be a customer. You assume that it must be good because that’s what the market share tells you.
- Java Authentication and Authorization – Free JAAS Book – This site contains the book I wrote sometime back about the Java Authentication and Authorization Service, or JAAS.
- Alfresco Press Releases – Alfresco Selected as One of Linux Magazine?s Top 20 Companies to Watch in 2008 – Alfresco Software today announced it has been named one of Linux Magazine?s Top 20 Companies to Watch in 2008
- Coderspiel / The right tool for the slob – How is it that some fancy-pants framework is always the right tool for an abstract job and PHP is the right tool for a real job?
- Java Thoughts: A Year of Wicket – I’ve been working with Wicket for almost a year. We’ve just released our first product that uses Wicket for the user interface, and so it seems like a good time to take stock. Here’s the executive summary: Wicket rocks!
- Groovy not Enterprise-ready, you’re kidding? – [ Guillaume Laforge ] – Groovy has been very stable and mature for a long time already. It is being used by many high-profile companies and institutions throughout the world with great success.
- The Impact of Culture on Innovation « The Abstract Truth – BEA eventually built a portal product and acquired another one, and an early opportunity to build a suite of now-indispensable products on top of WebLogic evaporated.
- JBoss (and possibly TomCat) should never have happened. « The Abstract Truth – BEA made a lot of mistakes. Letting JBoss out of the box was probably its biggest. While BEA was looking ?up? at its biggest competitor IBM, JBoss was busily undercutting BEA at the bottom end
- JBoss Matrix – A BEA-utiful Week – JBoss launched an innovators dilemma attack against BEA, not with a revolutionary product, but with a revolutionary business model, one that BEA couldn?t hope to copy without cannibalizing its existing revenue stream. BEA fell right into the trap.
- LatencyTOP – Measuring and fixing Linux latency – LatencyTOP is a Linux* tool for software developers (both kernel and userspace), aimed at identifying where in the system latency is happening, and what kind of operation/action is causing the latency to happen so that the code can be changed to avoid the
Daily del.icio.us for Jun 06, 2007 through Jun 08, 2007
- Maven – Security Annotation Framework – The Security Annotation Framework (SAF) is an instance-level access control framework driven by Java 5 annotations
- Wbox HTTP testing tool – Wbox aims to help you having fun while testing HTTP related stuff. You can use it to perform many tasks, including Benchmarking, Web server and web application stressing, Testing virtual domains, compression, etc
- filehippo.com Update Client – filehippo.com – The Update Checker will scan your computer for installed software, check the versions and then send this information to filehippo.com to see if there are any newer releases. These are then neatly displayed in your browser for you to download.
- I’m moving to Finland 🙂 | Economist.com – But American workers have perhaps the most to feel aggrieved about: theirs is the only rich-world country that does not give any statutory paid holiday
- Red Hat Magazine | Squid in 5 minutes – There are many great tools that Squid has to offer, but when I need to redirect http traffic to a caching server for performance increases or security, squid?s my pick. Squid has built in proxy and caching tools that are simple, yet effective.
Daily del.icio.us for Jun 02, 2007 through Jun 06, 2007
- filehippo.com Update Client – filehippo.com – The Update Checker will scan your computer for installed software, check the versions and then send this information to filehippo.com to see if there are any newer releases. These are then neatly displayed in your browser for you to download.
- I’m moving to Finland 🙂 | Economist.com – But American workers have perhaps the most to feel aggrieved about: theirs is the only rich-world country that does not give any statutory paid holiday
- Red Hat Magazine | Squid in 5 minutes – There are many great tools that Squid has to offer, but when I need to redirect http traffic to a caching server for performance increases or security, squid?s my pick. Squid has built in proxy and caching tools that are simple, yet effective.
- Coding Horror: The Best Code is No Code At All – The fundamental nature of coding is that our task, as programmers, is to recognize that every decision we make is a trade-off. To be a master programmer is to understand the nature of these trade-offs, and be conscious of them in everything we write
- Google kicks offline Web apps into gear | CNET News.com – The goal of Google Gears is to create a single, standardized way to add offline capabilities to Web applications. The initial code is aimed at JavaScript Ajax-style Web applications. It runs on IE & Firefox on Windows, Mac OS and Linux
- How to build the world’s best paper planes | Lifeandhealth | Life and Health – Get designs for the world’s best paper planes plus tips from aviation experts on how to make them fly faster and longer
- Christophe Coenraets » Flex-based SQLAdmin for Google Gears – The demo is a Flex-based Sales Force Automation application that uses Gears to save data to a local SQLite database while offline, and automatically synchronizes back with the server when you reconnect to the network.
Website Performance and Optimization
A couple of months ago, I noticed that I was getting pretty close to using up all of my monthly bandwidth allocation for my server and that was a surprise. I run several blogs that get quite a few hits but I didn't think I was anywhere near going over my 250 GB allotment. So I decided to spend a little time to optimize my server and figure out the best way to utilize what I had and optimize it to get the most performance out of my little box. Jeff Atwood's wonderful blog entry about Reducing Your Website's Bandwidth Usage inspired me to write about my experience and what I ended up doing to squeeze the most out of my server.
I had done some of the obvious things that people typically do to minimize traffic to their site. First and foremost was outsourcing of my RSS feeds to FeedBurner. I've been using FeedBurner for several years now after I learned the hard way how badly programmed a lot of the RSS readers were out there. I had to ban several IP addresses as they were getting my full feed every 2 seconds – Hoping that was some bad configuration on their side but who knows. Maybe it was a RSS DOS attack :). After taking a little time to see what was taking up a lot of the bandwidth, I discovered several things that needed immediate attention. First and foremost was the missing HTTP compression. Looks like an Apache or PHP upgrade I did in the past few months had ended up disabling the Apache module for GZIP compression and so all the traffic was going out in text. HTTP Compression delivers amazing speed enhancements via file size reduction and most if not all browsers support compression and so I enabled compression for all content of type text/html and all CSS and JS files.
Some older browser don't handle JS and CSS compressed files but anything of IE6 seemed to handle JS/CSS compression just fine and my usage tracking (pictured above) indicated that most of my IE users were using IE 6 and above.
Enabling HTTP Compression compressed my blog index page by 78% resulting in a statistical performance improvement of almost 4.4x. While your mileage may vary, the resulting performance improvement got me on the Top20 column at GrabPERF almost every single day.
Another issue I had was the number of images being loaded from my web server. As most of you already know, browsers will typically limit themselves to 2 connections per server and so if a webpage being loaded has 4 CSS files, 2 JS files and 10 images, you are loading a lot of content over those 2 connections. And so I used a simple CNAME trick to create an image.j2eegeek.com to complement http://www.j2eegeek.com and started serving images from image.j2eegeek.com. That did help and I considered doing something similar for CSS and JS files but decided instead to outsource image handling to Amazon's S3.
Amazon's S3 or Simple Storage Service is a highly scalable, reliable, fast, inexpensive data storage infrastructure that is fast and relatively inexpensive. S3 allows you to create a 'bucket', which is essentially a folder that must have a globally unique name and cannot have any sub-buckets or directories and so it's basically emulates a flat directory structure. Everything you put in your bucket and make publically available is accessible via http using the URL http://s3.amazonaws.com/bucketname/itemname.png. Amazon's S3 Web Service also allows you to call it using the HTTP Host header and so the URL above would become http://bucketname.s3.amazonaws.com/itemname.png. You can take this further if you have access to your DNS server. In my case, I created a bucket in S3 called s3.j2eegeek.com. I then created a CNAME in my DNS for s3.j2eegeek.com and pointed it to s3.amazonaws.com. And presto – s3.j2eegeek.com resolves to essentially http://s3.amazonaws.com/s3.j2eegeek.com/. I then used John Spurlock's NS3 Manager to get my content onto S3. NS3 Manager is a simple tool (windows only) to transfer files to/from an Amazon S3 storage account, as well as manage existing data. It is an attempt to provide a useful interface for some of the most basic S3 operations: uploading/downloading, managing ACLs, system metadata (e.g. content-type) and user metadata (custom name-value pairs). In my opinion, NS3 Manager is the best tool out there for getting data in and out of S3 and I have used close to 20 web based, browser plug-in and desktop applications.
In addition, I also decided to try out a couple of PHP Accelerators out there to see if I could squeeze a little more performance out of my web server. Compile caches are a no-brainer and I saw decent performance improvement in my PHP applications. I blogged about this topic in a little more detail and you can read that if you care about PHP performance.
The last thing I did probably had the biggest impact after enabling HTTP compression and that was moving my Tomcat application server off my current Linux box and moving it to Amazon's EC2. Amazon's EC2 or Elastic Compute Cloud is a virtualized cloud of computing available to you for $0.10 per hour of CPU utilization. I've been playing around with EC2 for a while now and just started using it for something real. I have tons of notes that I taken during my experimentation with EC2 where I took the stock Fedora Core 4 images from Amazon and made that server into my Java application server running Tomcat and Glassfish. I also created my own Fedora Core 6, CentOS 4.4 image and deployed them as my server. My current AMI running my Java applications is a Fedora Core 6 image and I am hoping to get RHEL 5.0 deployed in the next few weeks but all of that will be a topic for another blog.
In conclusion, the HTTP Compression offered me the biggest reduction in bandwidth utilization. And it is so easy to setup on Apache, IIS or virtually any Java application server that is it almost criminal not to do so. 🙂 Maybe that's overstating it a bit – but there are some really simple ways to optimize your website and you too can make your site hum and perform like you’ve got a cluster of servers behind your site.
PHP Acceleration – Pick Your Poison
As I deployed more applications and web sites on my server, I started running into resource issues. Since most of the applications I write are in Java, I run Tomcat on my Linux server. But I also run Apache as a front-end host for Tomcat as well as several PHP applications like WordPress, Vanilla and a few other PHP applications that I’ve written. I am not an expert PHP developer by any stretch of the imagination but I tinker with enough PHP that I decided to take a look at PHP Acceleration software.
For the uninitiated, PHP is a scripting language that is interpreted and compiled on the server side. PHP Accelerators offer caching of the PHP scripts in their compiled state along with optimization. There are several PHP optimization products out there and I decided to give eAccelerator, XCache and APC a try on my Linux machine. For the record, the box is running CentOS 4.4 which is essentially a distribution that is repackaged Red Hat Enterprise Linux 4.x.
- eAccelerator – eAccelerator is a free open-source PHP accelerator, optimizer, and dynamic content cache. It increases the performance of PHP scripts by caching them in their compiled state, so that the overhead of compiling is almost completely eliminated. It also optimizes scripts to speed up their execution. eAccelerator typically reduces server load and increases the speed of your PHP code by 1-10 times.
- XCache – XCache is a fast, stable PHP opcode cacher that has been tested and is now running on production servers under high load.
- APC – The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. It was conceived of to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.
I compiled and installed these PHP accelerators and found APC worked the best for me. XCache seemed to work well and actually provided a nice admin application that lets you peek inside the cache to see what’s cached, the hit/miss ratio, etc. eAccelerator also seemed to work well and offered a great performance boost but caused segmentation fault and made the Apache web server unusable. It could have been bad PHP code that was causing the segmentation faults but I didn’t really spend any times getting to the root cause. APC just worked, pretty much like XCache but seemed to offer a little better performance. Now I didn’t really perform any empirical testing here – I simply relied on my website monitor GrabPERF as I ran each PHP extension for a few days. Your mileage may vary based on your server architecture, application, lunar phase, etc but PHP APC seemed to work the best for me.