1,235 karma · joined September 6, 2007
Artillery - test everything you build & run in the cloud.
We're hiring! join us to help build the future of testing for DevOps.
https://www.artillery.io
Twitter: https://twitter.com/hveldstra
Email: h@artillery.io
It's an amazing tool for some tasks, but there's a lot of hype around it too.
To those down-voting me: Firstly, I would invite you to consult a good dictionary. Secondly, I'd invite you to undertake a moment's reflection, which I believe should make readily apparent the utter uselessness of a word that describes not a single person that ever lived.
(Lambdas couldn't even be triggered with HTTP calls when AWS Lambda launched.)
A true Lambda alternative, open-source or otherwise, would also have to offer alternatives to DynamoDB, S3, SNS/SQS etc. Without those you're basically reinventing CGI.
Request itself in my opinion is a great piece of work, it does pretty much anything one would want to do with an HTTP client.
Um, take ANY non-trivial application, written in any language, and then follow the chain of its dependencies all the way down to the kernel, and shriek in horror. JS is not unique here, the only unique part is perhaps how obvious npm makes it just how much stuff your code depends on.
Articles like this one though are doing it a disservice in my opinion. It's heavy on hype and subjective opinion, light on facts and outright misleading in a few places, for example:
- 1-1.5kb of memory per process is for a process that does nothing. It's less overhead than any other platform I know of, but I am not sure how that translates to: "Want to keep track of a large portfolio of stocks? Easy. Want to keep track of the whole market? No sweat."
- 9 9s uptime is a function of architecture, not language. OTP makes it easier to build resilient systems, but it's not a silver bullet and there's a tonne to learn in order to just use OTP effectively. Elixir is not going to give you anything for free.
"Massive parallelism also results in massive redundancy." - how exactly? My massively parallel application could be running on one machine. The author must have meant distribution which Erlang/OTP is indeed very good at.
"Want to coordinate across markets or geographies?"
You would certainly not want to distribute an Erlang cluster across two different data centers, much less geographies.
"Add more hardware, and Elixir's performance will increase almost linearly along with it."
No it won't - https://en.wikipedia.org/wiki/Amdahl%27s_law
"Moreover, whereas Erlang was built to run on telecom networks, Elixir is built to run websites, phone apps and web services. New and exciting stuff."
What? Elixir runs on top of BEAM, the exact same VM that Erlang runs on. Moreover, using Elixir in your typical 12Factor web-app makes very little sense - you wouldn't be benefitting from any of OTP and taking a hit on development time due to lack of libraries.
Also consider that `heapy` will probably only report on objects created by your Python code, and not any memory taken up by native code in the interpreter itself or any shared libraries.
1. For example see:
- http://stackoverflow.com/questions/860878/tracking-actively-...
- https://mail.gnome.org/archives/gnome-list/1999-September/ms...
- http://bmaurer.blogspot.co.uk/2006/03/memory-usage-with-smap...
The basic thing is to make sure you can separate real and synthetic requests (with a special header for example). This will allow you to mock/no-op certain operations like attempting to charge the user's card or reducing the quantity of stock you have. It'll also allow you to remove synthetic requests from your analytics data, so that marketing does not get excited by the sudden influx of new users. If you have user accounts on your system, make all fake users register with @somenonexistentdomain.com so you can filter for that too etc.
Obviously start slow and ramp up over time as you iron out issues.
JustEat.co.uk run daily load-tests in production at +20-25% of their peak traffic. As in: extra 20% simulated load during their peak hours, which happen to be between 6-9pm every day. They process a very respectable number of real-money transactions every second, a number that a lot of ecommerce sites would be very happy with. (Source: a presentation at ScaleSummit in London this year)
Feel free to @message me if you want to talk more about this.
Kong is a cool product, but Kong spam from a couple of accounts [1] on HN is getting tiresome. (Maybe it's just that I look through the comments of most stories to do with APIs.)
https://hn.algolia.com/?query=mashape%2Fkong&sort=byPopulari...
I understand that each { follower visits page } is dependent on the { Ashton Kutcher tweets } event, but I still don't understand why events are not independent of each other, and why the N visits to the webpage in time period T from the tweet would not likely be described by a Poisson process. Not expecting an answer btw, just thinking out loud here. :)
I guess it's not strictly performance related, but should definitely be one of the first parameters to tune.
# in in /etc/sysctl.conf:
fs.file-max = 100000
# then:
sudo sysctl -p
# in /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
# then:
ulimit -n 100000
(tweak the exact number as required)It's something I built for myself and I didn't expect to make anything, but it's still been entertaining to have the expectation confirmed.
The site has seen some okay traffic but hasn't made enough to buy me a half of Tennent's.
It's much easier to overlook than you'd probably imagine. I have seen apps serving hundreds of thousands of API requests per day that had the default settings. It's one of those quick changes that can have a big impact.
Jack Dorsey recommended this book at the recent Startup School
http://www.amazon.com/The-Score-Takes-Care-Itself/dp/1591843...
These are on the list :)