Skip navigation.

My Opera News

Behind the scenes at My Opera

Posts tagged with "MyOpera"

Slashdotted again...

, , , ...

My Opera was on Slashdot again today!

This time is Hallvord's fault :-)

Yesterday he wrote a blog post about an epic Javascript fail that today was picked up by several major web sites in Norway and in the U.S. and mostly probably elsewhere.

We realized there was something strange going on because of the unusual load and number of requests on our front-end servers. Analyzing the logs, it was clear that Hallvord's post was getting lots of pageviews per second, mostly from Slashdot, but also from Reddit and from the norwegian online magazine Digi.

The blog post was immediately put into our list of "hot content" to be cached, and everything was fine again in a couple of minutes. The idea for the future is to be able to automatically detect such high number of requests, at least for blog posts, and automatically cache them. Another alternative could be to enable blog post caching by default, but this should be done very carefully, because blog pages contain dynamic content that usually depends on the visiting user and on the user who is the "owner" of the page.

We'll see...

Yahoo! users once again receive mail from us

,

Lately we have been receiving many support tickets regarding e-mails from My Opera not being received. These tickets have included answers to support requests, notifications of private messages and especially activation of new My Opera accounts.

After being in conversation with Yahoo!, we have solved the problem, and there should not be any more problems regarding this. If you are experiencing this kind of problem at other mail providers, please let us know using the appropriate contact form.

We are sorry for the inconvenience this may have caused, but we are pleased that the problem finally has ceased.

Live long and prosper! :spock:

Face gestures on Slashdot

, , ,

A link to the Face-Gestures blog post on My Opera is on the slashdot home page right now.

More traffic than usual, but everything is running smoothly.
Of course, it's because of Chuck Norris :-)

Status of sidebar, friends and other stuff...

, , ,

The Apricot release is now stabilized, after a few days of problems here and there.

The good thing is that we learned something more. The bad thing is that it took us a couple of days to realize what the real problem was.

I always like to say that My Opera becomes stronger and faster only after some "crisis" moments. It's those performance/stability/whatever problems that demand highest attention and you have to do something to fix them, no matter what. So, whatever doesn't kill you, it makes you stronger. :-)

Initially, we thought the problems were in the new friends system code. After careful inspection and partial rewrite of both Sidebar and Friends components, it became evident that the problem had another cause. As many other sites, we use memcached on several machines. It acts as a distributed cache store that makes the site faster and able to serve more requests with the same hardware resources.

Before we started the emergency rewrite of the Sidebar module, we decided to take a closer look at the class that was handling the memcached connections and queries. What we found out (part of what My Opera is today is still legacy stuff for us...) is that this class was issuing a new connection to our memcached server each and every time we queried some data. This is obviously not optimal, so we decided to keep persistent connections to the servers.

As of now, we restored all the functionality in Sidebar and Friends. Sidebar and Friends data is now present on much more pages than before, and that means more backend power needed to serve the same pageviews. We also have a lot more features and queries to the database, but still we're able to cope with the traffic, which is btw quickly increasing.

The Sidebar in particular was broken because when we introduced caching for it, it happened that the same (cached) version of the Sidebar content was used for the /albums/ and for the /blog/ page, which is completely wrong. Now we keep two separate copies because they can, and will, be different. The Sidebar content is also kept in the cache for 30 minutes at most, unless you change your sidebar settings. The recent visitors list didn't update because of this caching. Now everything should be back to normal.
We will probably make sure that your sidebar is updated when you write a new blog post or when there's a new comment, etc... For now this is just planned...

In the meanwhile, our monitoring team (LOL) noticed that at peak time and at some random moments in the day, the site slows down for a couple of minutes, and then everything is back to normal. We're working to solve this by optimizing the code even more. Without breaking anything, if possible... :-)

Big surprises ahead... And you don't know the super-secret feature yet... :-)

Sidebar and friends

, , , ...

Many of you noticed problems in the sidebar and in the friends pages (or friends in the sidebar) since "Apricot" was released.

This is the dev blog, so let's make a step backward, and then try to explain what happened. Most of the My Opera pages are "DML pages".

DML Pages

The DML concept was probably invented in the first big rewrite of My Opera, around 2002-2003. It basically consists in a XML template very similar to an HTML page. Here's a stripped down version of the My Opera homepage:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//Opera//DML//EN" "/DTD/dml.dtd">
<?xml-stylesheet type="text/xsl" href="/xsl/community/home.xsl"?>
<html>
<head>
<title<Share your photos, blog and meet friends</title>
...
<body>

  <definemenu>
    <selected>home</selected>
    <page>home</page>
  </definemenu>

  <include module="XWA::User"/>
  ...
  <include module="XWA::XMLProd::MemberCount" />
  <include module="MyOpera:: DML::LatestActivities" />
  <include module="MyOpera:: DML::CommunityNews" var="numposts=3" />

  </body>
</html>

This DML document is then processed by one of the core modules of My Opera, and all the include directives are expanded. The final document is then processed with the specified XSLT stylesheet.

This system has probably some drawbacks, but allows the front-end developers, if they know XSLT, to include backend modules and build pages with whatever dynamic content they want. We have a long list of DML modules (the included modules, like MyOpera:: DML::LatestActivities).
That means that you can put the latest activities data stream wherever you want, in any page on My Opera.

Heavy DML modules

Some of the heaviest modules, according to our performance profiling, are:

  • XWA::XMLProd::User::Sidebar (awful name, and awful code) it's the slowest and heaviest of all, and of course, provides each user the sidebar content
  • XWA::User::Friends, provides your friends data, names, pictures, etc...
  • XWA::User, contains your own data, or the current page owner (for blogs, etc) data.
  • XWA::User::Journal, builds a blog post page data.

This is why when we have server-side problems, sometimes you see messages like: "XWA::User::Friends died..." :-)

When Apricot went live, it was fine for 1/2 hours, then when we reached our peak traffic hour, everything was really slow and heavy on the servers. That's also a reason why it's difficult to avoid these problems by testing, because currently we have no way to reproduce the live systems traffic load. BTW, we're trying to get hardware to build a stress test cluster...

The Friends module

We traced this problem back to the Sidebar and Friends modules. As a first emergency measure, we disabled both modules and started analyzing their performance. Particularly, the Friends module was completely reworked for the new friends system that requires approval now. We found there was a new is_online() function that was found to be the really heavy part.
Even if the "online" check has been there for ages, it was reworked in a more modular way, and that caused also performance problems. Unfortunately, these problems only manifest clearly when thousands of concurrent requests are running...

Another source of problems was the fact that now the Sidebar and Friends modules have been added to many more pages than before, so they are invoked many more times on average. This is something we hadn't really realized before going live.

Current status

The Sidebar module has been partially rewritten to take advantage of caching. As many noticed, now your sidebar doesn't update immediately. Some users also reported that their latest visitors sidebar panel is not updating since the release. Of course, being Sidebar now cached, the visitors are not tracked for every request. We're working on this, and visitors will be restored soon.

About the Friends module, we will restore ASAP the "online" functionality as well. Just have a bit more patience. Other minor bugs will be addressed in the next days. In the meanwhile, we hope you appreciated all the new and improved features this Apricot release brought you.

Planned downtime for the "Apricot" release

, , , ...

This is the first release in the "fruits and/or music bands" series.
The first one of course starts with "A", so Apricot. Tomorrow we will release this new version of My Opera, starting at 10:00 CET.
The planned downtime will be around 2 hours, even if we hope to keep it shorter than that. There will be Bubbles up and running in the meantime, so stay tuned... A full release changelog is going to be published tomorrow. Plus, there's a secret feature that nobody other than the development team knows about. Even some guys in the dev team don't know it. It's super-secret. It sneaked in mysteriously... :-) In case you're wondering, the picture is about "The Downtime", a band from the U.S.

Monkey business

, ,

A couple of days ago we received a mystery package from ThinkGeek here at the MyOpera headquarters. It only said "To My Opera developers"...

After scanning the box for traces of Anthrax and getting our bomb squad to search it, we opened it up tripping with curiousness.

It turned out to be a set of gifts from our former boss, and former My Opera developer Vetle Roeim

We got a barrel of monkeys monkey monkey monkey, a set of office monkeys, and a book with Japanese gestures.



Awesome gifts! We love gifts! Thanks a bunch Vetle, we love you too! :wink:

More pictures of the gifts can be found here.

On a sidenote: We just froze next release's code, so shouldn't be too many moons till we get something out. (Of course we continuously fix bugs^W^Wimprove the site in the background though.)