[{"data":1,"prerenderedAt":202},["ShallowReactive",2],{"project-14338708":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":38,"post_text":40,"what":41,"said":67,"maker_in_thread":116,"shape":119,"grid":124,"attempts":164,"same_week":165,"maker_shows":32,"maker_hidden":194,"reader_version":195,"card":196},"14338708","Nginx Sysguard","throttle requests by load, average request time, etc.","title","Show HN: Nginx Sysguard – throttle requests by load, average request time, etc.","https:\u002F\u002Fgithub.com\u002Fvozlt\u002Fnginx-module-sysguard\u002Fblob\u002Fmaster\u002FREADME.md","github.com","vozlt",1494814595,2017,161,17,233,2242,11,"notable","infrastructure","nginx module","library",[24,25,26,27],"nginx","load throttling","request rate limiting","server overload","loved",0.256,{"positive":31,"neutral":31,"mixed":32,"critical":33},4,1,0,9,{"idea":36},{"positive":37,"critical":33},3,[37,33,37,33,33,39,33,33,39,33,37,33,37,33,39,37,39],5,null,{"problem":42,"audience":40,"pricing":40,"motivation":51,"time_to_build":40,"stack":55,"openness":64,"stage":65,"team_size":66},{"value":43,"source":44,"evidence":45},"Protects servers from overload by throttling requests based on load or average request processing time","maker",[46,48],{"id":47},"post",{"id":49,"by":11,"text":50},"14339352","First of all, you can use \"average of request processing times\" which are not possible using other methods. Second of all this is a port of the tengine module used by Alibaba…",{"value":52,"source":44,"evidence":53},"Port of Alibaba's Tengine sysguard module, seen as easier and more flexible than alternatives",[54],{"id":49,"by":11,"text":50},[56,59],{"value":24,"source":44,"evidence":57},[58],{"id":47},{"value":60,"source":61,"evidence":62},"C","inferred",[63],{"id":49,"by":11,"text":50},"open_source","launched","unknown",{"praise":68,"objections":81,"requests":98,"questions":99,"alternatives":104},[69,73],{"value":70,"source":44,"evidence":71},"Useful for throttling by average request time, which other methods cannot do",[72],{"id":49,"by":11,"text":50},{"value":74,"source":75,"evidence":76},"Credible source since it ports Alibaba's Tengine module","commenter",[77],{"id":78,"by":79,"text":80},"14341783","highclass","Have you personally tried other methods when having an overload of server traffic? Do you have a link showing a real setup of a better method? Of note, the module is a port from…",[82,89],{"value":83,"source":75,"evidence":84},"Reacts only after load is already high, so spikes can still overload the server",[85],{"id":86,"by":87,"text":88},"14340831","viraptor","I'm just trying to figure out tradeoffs here. The way I understand sysguard now, it will find out that the load is too high, after the load is too high. You can set the threshold…",{"value":90,"source":75,"evidence":91},"Cgroup limits may be a better system-level approach",[92,95],{"id":93,"by":87,"text":94},"14339291","I'm curious why would you enforce that from nginx itself, rather than put the app \u002F nginx under a cgroup with appropriate limits.",{"id":96,"by":87,"text":97},"14340799","You can limit both the CPU shares and memory available to the app. (And network rate of it matters for the app) The result for the app server would be the same -> a throttle on…",[],[100],{"value":101,"source":75,"evidence":102},"Why enforce limits in nginx rather than with cgroups",[103],{"id":93,"by":87,"text":94},[105,110],{"value":106,"source":75,"evidence":107},"cgroup CPU and memory limits",[108,109],{"id":93,"by":87,"text":94},{"id":96,"by":87,"text":97},{"value":111,"source":75,"evidence":112},"nginx backend timeouts with custom 502 page",[113],{"id":114,"by":87,"text":115},"14340990","That part already exists in nginx. Set up backend timeout and make a custom 502 page. It will kick in when the app is too busy.",{"comments":32,"answered":33,"key":117},[118],{"id":49,"text":50},{"commenters":120,"max_depth":121,"maker_replies":32,"first_comment_mins":122,"lifespan_hours":123},8,10,172,16,[125,127,129,130,132,135,139,142,143,146,147,149,151,154,156,158,161],[93,33,37,126,87,33],"project\u002Fneutral\u002Fidea",[49,33,33,128,11,32],"maker\u002Fpositive\u002Fidea",[86,33,37,126,87,33],[78,33,33,131,79,33],"commenter\u002Fneutral\u002Fidea",[133,33,33,131,134,33],"14342960","zzzcpan",[136,33,39,137,138,33],"14339910","project\u002Fpositive\u002Fidea","tokenizerrr",[140,33,33,131,141,33],"14340670","Filligree",[96,33,33,131,87,33],[144,33,39,137,145,33],"14340940","tyingq",[114,33,33,131,87,33],[148,33,37,126,145,33],"14341022",[150,33,33,131,87,33],"14341252",[152,33,37,153,145,33],"14341356","project\u002Fmixed\u002Fidea",[155,33,33,131,87,33],"14341434",[157,33,39,137,145,33],"14341536",[159,33,37,126,160,33],"14343957","skyde",[162,32,39,163,160,33],"14343064","project\u002Fpositive\u002Fnone",[],[166,171,176,181,184,189],{"id":167,"name":168,"points":169,"category":170},"14343967","FSQL",341,"dev_tools",{"id":172,"name":173,"points":174,"category":175},"14332479","Howmanypeoplearearound",199,"security_privacy",{"id":177,"name":178,"points":179,"category":180},"14314875","SQueaLy",163,"data",{"id":182,"name":183,"points":14,"category":170},"14360921","3DC.io",{"id":185,"name":186,"points":187,"category":188},"14330635","Gitorials",147,"learning_science",{"id":190,"name":191,"points":192,"category":193},"14326166","Verb Master",124,"languages",false,"v2",{"id":197,"name":5,"line":6,"ai":194,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":198,"top":18,"kw":199,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":200,"url":9,"mix":201,"praise":70,"objection":83,"sub":21},14338708,0.26,[24,25,26,27],"30300500503030535",[31,31,32,33],1794036555330]