Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Illumos/Solaris OS #181

Closed
hadret opened this Issue Oct 11, 2017 · 1 comment

Comments

Projects
None yet
1 participant
@hadret
Copy link

hadret commented Oct 11, 2017

Hi,

first of all, many thanks for an awesome module. It works flawlessly on Linux so I wanted to try it out on different OS (SmartOS in particular, which is distribution of Illumos that derives from OpenSolaris). Long story short, the module doesn't work that well with different connection processing methods (on Linux it defaults to epoll). I tried two (/dev/poll & eventport) and ended up with two different issues:

  1. /dev/poll was draining CPU to the point where machine was no longer usable.
  2. eventport was cool with CPU, but connections were hanging and after a while it was no longer capable of serving any traffic whatsoever (likely pool of connections was drained).

Because SmartOS derives from Solaris world it shared most of its good and not-so-good parts. eventport is strongly discouraged by nginx (via connection processing methods documentation) and that's too bad as I had high hopes it will actually work (there's even some patch for nginx to fix its behavior when eventport is in use, but it didn't help in this case).

The good part though is that I could use dtrace to see what is actually happening under the hood. The best results I had were achieved whenever I was running nginx with single worker process as it was taking much more time for draining CPU or running out of connections. I'm sharing my findings via flamegraphs (more about concept can be found on Brendan Gregg's website):

/dev/poll (devpoll):

eventport (start and 10m in while running):

healthy instance for comparison (i.e. upsync module disabled):

I realize that SmartOS is rather niche in the market, but I was hoping that maybe the problem is not that big of a deal and could be easily fixed.

Many thanks for your great work!

@hadret

This comment has been minimized.

Copy link
Author

hadret commented Feb 6, 2018

I guess there won't be enough interest in this one... Too bad.

@hadret hadret closed this Feb 6, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.