Node is probably OK for small single purpose projects, but I myself won't use it for bigger stuffs that need to scale, integrate with legacy or complex technologies, or grow over years.
I'm not a frequent user of Node.JS myself, but I think many proficient Node.JS developers would beg to differ on what scale Node.JS can go into. From an architecture POV, there is no limit to how far Node.JS can go. It depends on your architecture choice. If you don't segregate your design properly, any programming languages will reach bottleneck. You can potentially start up like thousands of Node.JS processes across thousands of physical/virtual instances and get the perform you need. Each instance can host multiple Node.JS whether using the same NIC or multiple NICs within containers or just plain processes management by kernel. When you talk about large, the programming languages choice is not really the bottleneck. It's the way you program that will limit your scalability in any platforms, virtualise like VMWare, Physical box or cloudy platforms.
Suppose when you have 1000 servers all synchornising across each other for a distributed lock, even C will get deadlock. If you employ message queue or message pass techniques in your processing, even programming languages as slow as a shell script will scale. At the end of the day, scalability is not about how fast you can move, it's about how big you can coordinate.
On a related note, I wonder how Node's performance compares in term of processor and memory usage to other "lightweight" servers like Java-based Jetty and Undertow etc.
I don't have numbers of such things because I don't really benchmark them for fun, and most of the projects I do uses Java extensively instead of Node.JS since the former is more renown in the Enterprise arena that I mostly worked in.
Common complaints about Java servers are its large install size (JRE) and memory usage. Not sure if the .NET world has lightweight production ready server alternatives apart from the heavy IIS.
JRE install size is not an issue for a lot of Enterprising software since we are normally endowed with hundreds of gigabytes of diskspace. A few hundred MB is of no real concern. If you need, you can always compress it further down for distribution. But if you are talking about servers, then really JRE is not even the end of the story. The 3rd party libraries that we used are potentially larger than JDK itself.
Lightweight here don't normally refers to the diskspace unless you are on embedded platforms. It will normally refers to memory consumption and processing overhead. Java does have overhead when it comes to startup, but for server applications that will run for weeks or months before it get shutdown for maintenance, it is heavy enough to be robust and stable. With thousands of threads running in it, it has proven records for scalability and robustness. When you make comparison, you really need to take into consideration of size and duration.
At least for Java, we can avoid the heavyweight JavaEE app servers like JBoss and Weblogic.
Well, sometimes you want them to be there. When you are deploying large number of instances, it can be an advantage using farm deployment and other enterprise features, where these Enterprise servlet containers offer. I wouldn't suggest avoid them. I would suggest know what they are capable of, and decide if they are a good fit to your problem size and environment and costing.