FAQ
Which version of Go are you running? Can you try with tip?


On 19/08/2013, at 22:38, Niko Schwarz wrote:

I've had a snippet of code that polls a local server very frequently, and I'm somewhat surprised in how many ways it's failing. I've tried to simplify it, and the following sadly isn't as diverse in its error messages.

Here's the simplified version:

package main

import (
"fmt"
"log"
"net/http"
"sync"
"testing"
"time"
)

func TestProvoke(t *testing.T) {
go func() {
log.Fatal(http.ListenAndServe(":7000", http.HandlerFunc(func(out http.ResponseWriter, in *http.Request) {
out.Write([]byte("Hi"))
})))
}()
time.Sleep(500 * time.Millisecond)
var wg sync.WaitGroup
wg.Add(256)
for i := 0; i < 256; i++ {
go func() {
for j := 0; j < 400; j++ {
resp, err := http.Get("http://localhost:7000")
if err != nil {
panic(err)
}
resp.Body.Close()
}
wg.Done()
}()
}
wg.Wait()
}

It produces three error messages on OSX:

panic: Get http://localhost:7000: dial tcp 127.0.0.1:7000: connection reset by peer

panic: Get http://localhost:7000: lookup localhost: no such host

panic: Get http://localhost:7000: dial tcp 127.0.0.1:7000: too many open files

The last of which actually makes sense, and can be avoided by `ulimit -n 10000`
The first might also make sense if I'm just overloading the server. However, the server doesn't give any log output indicating this. The middle one just seems nuts to me.

The original snippet was more interesting. It produced all of the previous, but also, after hundreds of successful runs:

panic: dial tcp 127.0.0.1:9000: can't assign requested address

After running the original snippet, I usually can't open pages in the web browser for a few seconds after, as if I'm running out of sockets, file handles, or something of the sort.
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 4 of 11 | next ›
Discussion Overview
groupgolang-nuts @
categoriesgo
postedAug 19, '13 at 12:38p
activeAug 27, '13 at 10:10p
posts11
users6
websitegolang.org

People

Translate

site design / logo © 2022 Grokbase