I’ve attended Zit Seng’s lecture last year and I happened to blog about it at “can scale?“. However, last year I was still quite noob at web technologies. But in retrospect, I realize that some of the higher level general concepts stuck with me ever since last year. At least I know there’s such a thing called “load testing/balancing”. I think I got to know a bit more about what “Firebug” can do from that lecture too. I also got to know about how Drupal is very slow from Zit Seng’s blog at http://zitseng.com/. All these couldn’t have been possible if it’s not because of ZitSeng’s lecture.
This year, equipped with more experience, I think more things actually make sense to me. At least I don’t get @@ 30 minutes into the lecture.
This is the rough outline for today’s lecture
- Infrastructure Issues
- Performance Monitoring
- Load Testing (Commercial Solution: HP LoadRunner)
- Basic Optimizations
- What’s in the Real World
- Other Interesting Stuffs
ZitSeng mentioned about his encounter with a certain Drupal app that does 46,000 syscalls per page load! Other Drupal apps also does around 6000 syscalls. In comparison, a simple normal Hello World PHP app only uses 200-300 syscalls, WordPress does around 700+. Read more about this at Building Scaleable Web Apps – Syscalls
I know “sprites”, I used them when I was making my own games using RPGMaker 2000. It’s a very smart way to optimize an application. Load one big picture and ask CSS to pick a particular component out. I knew I’ve heard that CSS can do that too, but somehow it didn’t stick. I think it will this time round. Use CSS sprites. Example (I grabbed it off SmashingMagazine post)
Key Learning Points from “High Performance Web Site: Essential Knowledge for Front-End Engineers – Steve Souders” & “ApacheCon Europe ’06”
- Make fewer HTTP requests
- Use a content delivery network
- Reduce DNS lookups/Avoid DNS lookups (in .htaccess, etc)
- Avoid .htaccess
- Pre-render popular content (caching)
- Make popular content static
SSL creates plenty of CPU overheads at both web server and client browser. One possible solution is to relieve the web server of processing SSL e.g. Hardware or separate server.
End of lecture reflection: I think 60% of the stuff still flew past my head but I’m glad that I understand at least 40% of it, I think. Just like what Zit Seng has said in the beginning, the takeaway from this lecture is not technical skills, it’s more about the “appreciation” of the issues involved when we scale our app. I remember Sebastian (Jollideal) telling me that he refers to his CS3216 notes as his Jollideal.com website scale. I think he’s referring to ZitSeng’s lecture notes. So ya, true real world usage.
For our final project team mate, let’s aim to grab the CS3216 achievement badge “refer to ZitSeng’s lecture notes”!
Some key quotes:
“We need experts who understand the entire stack!” – Zit Seng.
“Network issues are “fun”‘ – Zit Seng
“Q: What is Acceptable Web Response Time? A: There is no standard. User satisfaction is achieved when experience exceeds expectations. Do better than your competition. Do better than your users’ expectations.” – Zit Seng
“Slow client ‘hogs’ your server” – Zit Seng