Comments (11)
Do you have more info? A test case? What kind of concurrency are you pushing? What are your response times? Whats the file descriptor limit in the session you're using?
from micro.
just run the greeter example (https://github.com/micro/micro/tree/master/examples/greeter)
and change client to
for i := 0; i < 500000; i++ {
if err := cli.Call(ctx, req, rsp); err != nil {
log.Println(err)
// return
}
}
I work on mac osx yosemite, ulimit -a show
-t: cpu time (seconds) unlimited
-f: file size (blocks) 65536
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 709
-n: file descriptors 65536
from micro.
I've just run through this on mac os x yosemite with absolutely no issues. Are you using the latest code?
Here's my ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2560
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
from micro.
Found a way to replicate when using caching selector. I think the rate at which requests are made were slowed by the registry lookup in my previous attempt.
At around 16k Calls I hit the issue
$ go run client/client.go --selector=cache
16271 {"id":"go.micro.client","code":500,"detail":"Error sending request: dial tcp 192.168.1.65:51149: connect: can't assign requested address","status":"Internal Server Error"}
from micro.
I'm thinking more about this. It's yet unclear at what layer a connection pool would be implemented. If its done within the HTTP transport, then the benefit is only provided to that implementation of the transport. If done at the Selector level it complicates the implementation of a selector and requires every implementation to handle pooling.
This may be something that needs to be solved in the Client itself. The client selects, dials, makes the request and closes the connection. Implementing it at the Client level would ensure every Transport would get the benefit.
from micro.
This is the actual issue being faced. Saturation the ephemeral port limit. http://danielmendel.github.io/blog/2013/04/07/benchmarkers-beware-the-ephemeral-port-limit/
from micro.
Started writing some connection pooling code. Literally just an hours work as of this morning but I'll share when I have something concrete. There's probably a ton of edge cases but we have to start somewhere. Done at the RPC level so that ALL the transports will benefit.
from micro.
from micro.
great job,i will do some testing
from micro.
Any follow up? How's the testing going?
from micro.
I'm closing this since the work has already begun.
from micro.
Related Issues (20)
- grpc error "transport is closing" HOT 5
- Documentation
- Failed to connect to micro server at 127.0.0.1:10012 HOT 2
- Unable to login on a remote server HOT 2
- How to run in production? HOT 6
- Kubernetes Deployment HOT 2
- Context deadline exceeded HOT 2
- server.NewServer use http2 some bug
- 'micro' is not recognized as an internal or external command, operable program or batch file.
- Problems connecting with Windows
- Could not import opentelemetry HOT 2
- How to write KV to a table. HOT 4
- How to update and delete - tables/databases HOT 1
- Postgres Database Connectivity HOT 2
- micro.dev/v4 - module declares its path as: github.com/micro/micro HOT 8
- Releaser build with CGO_ENABLED=0 doesn't run on Mac M1 HOT 1
- ..\..\go\pkg\mod\github.com\!proton!mail\[email protected]\openpgp\ecdh\x25519.go:16:2: //go:build comment without // +build comment HOT 3
- list of bugs i know
- run micro server command error HOT 6
- go: micro.dev/v4/cmd/protoc-gen-micro@latest: version constraints conflict: HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from micro.