5 ms·
CCP Games brings Sentry to the PlayStation
- look_lookatme 13y agoI've read the Wikipedia article on Stackless Python but I was wondering if someone could quickly explain why Stackless is more desirable to CCP than regular Python?
- gvickers 13y agoLets you get around the GIL (Global Interpreter Lock), basically gives python lightweight threads (greenlets).
- deleted 13y ago[deleted]
- sp332 13y agoUnlike most MMOs, which have multiple instances or "shards" of each location, EVE Online keeps all players in one shard. That means, for busy hub areas, they have to handle thousands of ships interacting with each other all on one server. The lightweight concurrency lets them write little (and not-so-little) bits of code that execute in parallel without incurring overhead associated with OS threads. Edit: sorry if I'm confusing "concurrent" and "parallel", I never really liked those terms :p
- cdash 13y agoAs far as I know nothing in EVE executes in parallel in a traditional sense. Each solar system is run on one thread and one python interpreter. While stackless is used for concurrent programming it is not used for parallel programing.
- krisvale 13y agoThousands of lightweight threads with cooperative scheduling. Allows you to have a myriad of little programs running, each perhaps servicing a network request, or running some long running game logic. Impossible with threads. Also, threads are pre-emptive, which means that you need to use locking almost everywhere.
- james33 13y agoSentry really is a life saver. We use it for our HTML5 MMO for both the client-side Javascript and the back-end in Node.js, and it has helped us to dramatically improve our end user experience. Really cool seeing this used out of the browser!
- famousactress 13y agoThis is a handy reminder. We spun up Sentry a while back (like, maybe 1-1.5 years ago?) and spun it back down because logging to it via TCP was unacceptable for us. For the folks using it, how do you get data to it? Curious how things have shaped up over time.
- teh_klev 13y agoCould you explain why?
- famousactress 13y agoWe didn't want to write to something synchronously without having a fault-tolerant solution for latency... especially when we could afford the end-user latency of seeing the exceptions later. I don't want my logging aggregator to be a SPOF for the main app. Would much rather suck up the data asynchronously from syslog or files, etc.
- krisvale 13y agoHi, at CCP we have a custom transport that does the logging to sentry on a separate tasklet (think lightweight thread). Basically, the logging is done in the backgrond when there is time, freeing the thread whence the error came up to do other stuff immediately.
- zeeg 13y agoThere's two things to consider here: 1) Sentry is not designed to replace logging therefor things like syslog will never achieve the same result. Sentry is explicitly for catching outliers and TCP is the only method able to store it's data. 2) As with CCP most people no longer use synchronous transports. We even changed the default to be the threaded worker transport. That said, when your user hits a 500 adding 50-200ms is generally acceptable as you've already put the user in a bad situation.
- famousactress 13y ago