Live data from Hacker News

Skype brief post-mortem

skype.com

51–60 of 66 posts

Re: Skype brief post-mortem

#51
post #47

Earlier quoted context omitted.

Why is it a problem to bring supernode back online?

Supernodes are just guys like you and me with the right amount of bandwidth and the right network connection - if bad code or bad data exposed an existing bug, causing the supernodes in the meshed p2p network to go down - you have a chicken and egg problem. Skype doens't own the supernodes.... skype works because it uses the user's own resources to help route calls for other users.

So the bug is in Skype client code that is responsible for handling supernode behavior.

The fix should probably be about developing deploying new version of Skype client.

Such fix can take a week. Especially considering that engineering might be not in a good shape in Skype few years after acquisition from original founders.

Re: Skype brief post-mortem

#53
Reading the discussion here reminded me of the outage of AT&T's long-distance network back in 1991. After a bit of searching, I found an interesting-looking document at http://faqs.org/rfcs/rfc3439.html entitled "RFC 3439 - Some Internet Architectural Guidelines and Philosophy," which seems relevant here somehow. Though this document outlines considerations pertaining to complexity in Internet backbone architecture, perhaps the overall philosophical questions it poses and guidelines it offers could be instructive as regards the recent Skype meltdown.

As regards the aforementioned 1991 failure of the AT&T long-distance system, which resulted in a service outage of about six hours, the document says:

"The PSTN's SS7 control network provides an interesting example of what can go wrong with a tightly coupled complex system. Outages such as the well publicized 1991 outage of AT&T's SS7 demonstrates the phenomenon: the outage was caused by software bugs in the switches' crash recovery code. In this case, one switch crashed due to a hardware glitch. When this switch came back up, it (plus a reasonably probable timing event) caused its neighbors to crash When the neighboring switches came back up, they caused their neighbors to crash, and so on [NEUMANN] (the root cause turned out to be a misplaced 'break' statement; this is an excellent example of cross- layer coupling). This phenomenon is similar to the phase-locking of weakly coupled oscillators, in which random variations in sequence times plays an important role in system stability [THOMPSON]."

Re: Skype brief post-mortem

#54

Does anybody know if these supernodes are paid for by Skype or they're simply users' computers being commandeered by Skype (after getting click-through permission). The explanation doesn't ring true to me because AFAIK supernodes are used only if a direct P2P path cannot be established between caller and callee. What we're observing is the inability to sign in and see contacts' status. I always thought that was centr…

The user database is centralized (from a talk that lead Skype engineer given couple of years ago), so I too wonder how would a traffic routing nodes affect signing in. I am sure non of the client code has their user database credentials... So supernodes can only prevent communication, calls, video from happening.

So there's something else they are hiding. My Mac skype dies on start since yesterday (trying to sign-in), supernodes would have nothing to do with that.

Re: Skype brief post-mortem

#55
post #37

Earlier quoted context omitted.

There is a meaningful distinction between a server that serves 1% of requests and server that is down. I assume that overloaded server still serves some requests. But my assumption could be wrong, so if you have experience with that -- please share your knowledge. Another thing that baffles me: if I introduce new supernode that is sitting on new IP address -- why would all the traffic suddenly hit that node? Shouldn'…

I assume that overloaded server still serves some requests. See http://en.wikipedia.org/wiki/Thundering_herd_problem Many types of systems need a warm up period before they can realize their full performance. In web applications a controlled warm up is often needed to prime the caches. In P2P applications - which you can't easily "reboot" as a whole - the restoration of a steady state can be much more complex. Should…

This has absolutely nothing to do with the thundering herd problem. Why are you linking to seemingly random Wikipedia articles?

The GP's question is valid: there's no reason why server software should crash when overloaded instead of simply degrading service.

Re: Skype brief post-mortem

#56
post #9

does anyone know why skype picked German as the only translation of this message?

Because Germans tend to complain the most if free stuff does not work ;-)

What free stuff?

I have a paid subscription for international calls and my voicemail, my dear friend. Do you? If not, then stop mocking people you don't know. If you do, preferably also stop mocking people you don't know.

Having said that, I have important business calls to do today and I'm certainly not going to throw money at my iPhone carrier. I hope Skype is coming back online for me, soon. But I have not yet started complaining anywhere, because Skype has offered me a great service and lots of savings in the last two years.

But who am I to day, I'm just a grumpy German.

Re: Skype brief post-mortem

#57
post #37

Earlier quoted context omitted.

I assume that overloaded server still serves some requests. See http://en.wikipedia.org/wiki/Thundering_herd_problem Many types of systems need a warm up period before they can realize their full performance. In web applications a controlled warm up is often needed to prime the caches. In P2P applications - which you can't easily "reboot" as a whole - the restoration of a steady state can be much more complex. Should…

This has absolutely nothing to do with the thundering herd problem. Why are you linking to seemingly random Wikipedia articles? The GP's question is valid: there's no reason why server software should crash when overloaded instead of simply degrading service.

True, there's no reason but that doesn't mean it doesn't happen. Many people (I would argue, rightly) equate degraded service to being out of service.

Made-up Scenario: My cluster can handle XXXk users with an SLA of YYms response time. In degraded mode, I'm only handling XXk users with YYYYms response times.

I'm not meeting my SLA for the remaining number of users so I am, in essence, offline.

As to your specific point of "crashing", look at what happened with 37s. Should the server have crashed? No but there was a bug. The reason you add more capacity in the FIRST place is because the existing number of nodes cannot handle the volume. Depending on any number of bugs, issues or configuration your degraded capacity is for all intents and purposes "crashed".

Made-up scenario #2: A single server in your apache configuration can handle 200k concurrent connections reliably with fast response times. Double that load and response times are so long that various devices on the path are timing out the connections as stale. Apache hasn't crashed but it's not really doing anything.

Fast failure is an accepted best practice. Shit, it's baked into Erlang. Kill the process, start a new one and move on. Depending on the nature of the crash, you're doing nothing but churning processes and not actually servicing requests.

The bigger problem is that people don't design for this type of scenario. Static landing pages. Decoupled services instead of monolithic all-in-one containers. Look at github. That's an awesome example of how to degrade service during an outage. Only certain components are "crashed" because everything is fairly decoupled.

Meanwhile there's a guy over here running 4 apps in the same tomcat container that communicate over memory transport with each other or even if he had the common sense to decouple each app, didn't bother to fail fast and was busy spinning up threads trying to communicate with the rest of the services that he can't actually respond to anything externally.

Re: Skype brief post-mortem

#58
post #3

Under normal circumstances, there are a large number of supernodes available. Unfortunately, today, many of them were taken offline by a problem affecting some versions of Skype. So, what was the problem affecting versions of Skype?

That's what I've been wondering all day. I didn't have a problem with Skype being down; I had a problem with Skype having exploded this morning, screaming about uncaught exceptions as it did. Your quote was an "aha" moment for me.

So did I, were you travelling at the time? I was in an airport and I figured that it is the weird you have an internet connection but it only takes you to a pay per usage landing page and no other page kind of problem that made Skype barf. I happened to a Java network client too at the same time. I can send you logs Skype!

Re: Skype brief post-mortem

#59

Earlier quoted context omitted.

When this happens to our websites (when all servers go down), we need to rate limit and/or shut down traffic at the load balancer level as we bring things back online, otherwise everything just continues to get swamped and goes right back down. This would be nearly impossible in a P2P network and coordinating it between locations would be an even bigger nightmare. I imagine this is why turning on an entirely new netw…

Why would overloaded server go down? Shouldn't it simply stop serving incoming requests if it's overloaded?

Usually too many requests mean the machine runs out of memory. How it handles that is different, but it usually means the service goes down and might need a restart.

Re: Skype brief post-mortem

#60
post #37

Earlier quoted context omitted.

I assume that overloaded server still serves some requests. See http://en.wikipedia.org/wiki/Thundering_herd_problem Many types of systems need a warm up period before they can realize their full performance. In web applications a controlled warm up is often needed to prime the caches. In P2P applications - which you can't easily "reboot" as a whole - the restoration of a steady state can be much more complex. Should…

This has absolutely nothing to do with the thundering herd problem. Why are you linking to seemingly random Wikipedia articles? The GP's question is valid: there's no reason why server software should crash when overloaded instead of simply degrading service.

This has absolutely nothing to do with the thundering herd problem.

The skype outage probably not. This was in response to the thread going on about overloaded webapps - thundering herd is a common issue there.

The GP's question is valid: there's no reason why server software should crash when overloaded instead of simply degrading service.

Nobody used the word "crash" but graceful degradation is quite hard. You have to understand the problems at heart, plan and build for it. That is more than enough reason for most apps to not degrade very gracefully.

Post reply on HN