समवर्ती HTTP कनेक्शन की संख्या पर ऊपरी सीमा क्या है जो गो में लागू एक बहुत ही सरल सर्वर संभाल सकता है?गो सर्वर में समवर्ती (एक साथ) HTTP कनेक्शन की सैद्धांतिक अधिकतम संख्या क्या है?
10
A
उत्तर
11
समवर्ती HTTP कनेक्शन की संख्या उपलब्ध स्मृति और ऑपरेटिंग सिस्टम सीमाओं द्वारा सीमित है।
लिनक्स में, मुलायम ऑपरेटिंग सिस्टम की सीमाएं - जैसे कि खुली फ़ाइलों की अधिकतम संख्या - ulimit
का उपयोग करके मुद्रित और बदला जा सकता है।
स्मृति के मामले में, 32-बिट लिनक्स पर चल रहे न्यूनतम गो HTTP सर्वर में प्रत्येक HTTP कनेक्शन 21 KiB स्मृति (इस सर्वर का स्रोत कोड, गो संस्करण 2013-03-23 के साथ संकलित है) नीचे)। 64-बिट लिनक्स पर, स्मृति खपत अधिक होने की उम्मीद की जा सकती है।
32-बिट सिस्टम पर सर्वर के लिए 1 जीबी मेमोरी उपलब्ध है, 21 कीबी का मतलब है कि लगभग 50,000 एक साथ कनेक्शन संभव हैं। यह में लिनक्स कर्नेल द्वारा उपभोग की गई स्मृति शामिल है।
package main
import (
"flag"
"fmt"
"net/http"
"os"
"runtime"
"sync"
)
var isClient = flag.Bool("client", false, "Whether to start the HTTP server or the HTTP client")
var N = flag.Int("n", 1000, "Number of concurrent HTTP requests")
var wait = make(chan byte)
var counter = 0
var reachedN = make(chan byte)
func handler(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "some text")
counter++
if counter == *N {
reachedN <- 0
}
<-wait // Block this goroutine
}
func main() {
flag.Parse()
if *N <= 0 {
fmt.Fprintf(os.Stderr, "invalid number of goroutines")
os.Exit(1)
}
if *isClient {
// Initiate N http connections
var wg sync.WaitGroup
for i := 0; i < *N; i++ {
wg.Add(1)
go func(ii int) {
_, err := http.Get("http://127.0.0.1:12345")
if err != nil {
fmt.Fprintf(os.Stderr, "client %d: %s\n", ii, err)
os.Exit(1)
}
wg.Done()
}(i)
}
wg.Wait()
} else {
runtime.GOMAXPROCS(1) // No concurrency
// Read MemStats
var m0 runtime.MemStats
runtime.ReadMemStats(&m0)
go func() {
<-reachedN // Wait until there are *N concurrent requests
// Read MemStats
var m1 runtime.MemStats
runtime.ReadMemStats(&m1)
fmt.Printf("Number of HTTP connections: %d\n", *N)
fmt.Printf("Memory consumption per connection: %.2f bytes\n", float64(m1.Sys-m0.Sys)/float64(*N))
os.Exit(1)
}()
http.HandleFunc("/", handler)
err := http.ListenAndServe(":12345", nil)
if err != nil {
fmt.Fprintf(os.Stderr, "server: %s\n", err)
os.Exit(1)
}
}
}
संबंधित मुद्दे
- 1. ब्राउज़र एक साथ बनाएगा एक साथ कनेक्शन की अधिकतम संख्या क्या है?
- 2. एसक्यूएल - सभी अधिकतम समवर्ती कनेक्शन
- 3. समान होस्ट में समवर्ती NSURLConnections की अधिकतम संख्या?
- 4. जेनकींस - समवर्ती नौकरियों की अधिकतम संख्या
- 5. ओपनएसएसएल कनेक्शन की अधिकतम संख्या
- 6. सैद्धांतिक अधिकतम संख्या में खुले टीसीपी कनेक्शन क्या हैं जो आधुनिक लिनक्स बॉक्स में
- 7. एरलांग की एक साथ खुली बंदरगाहों की अधिकतम संख्या?
- 8. विंडोज समवर्ती टीसीपी/आईपी कनेक्शन की अधिकतम संख्या कौन सा है?
- 9. एक विंडोज सर्वर 2008 बॉक्स में अधिकतम HTTP कनेक्शन क्या खोल सकते हैं?
- 10. वेब सर्वर उपयोगकर्ताओं की अधिकतम संख्या अपाचे संभाल सकता है?
- 11. क्या गिट स्टैश की अधिकतम संख्या है?
- 12. अधिकतम कनेक्शन पूल आकार
- 13. समवर्ती डाउनलोड की संख्या में कोई सीमा क्यों है?
- 14. मोंगोडीबी अधिकतम कनेक्शन कनेक्शन
- 15. नेट अधिकतम समवर्ती टाइमर धागे
- 16. सभी प्रमुख ब्राउज़रों द्वारा अनुमत HTTP पुनर्निर्देशन की अधिकतम संख्या क्या है?
- 17. कितना समवर्ती http अनुरोध संभाल सकता है
- 18. क्या hbase में अधिकतम संस्करण संख्या है?
- 19. कैसंद्रा में कीपों की अधिकतम संख्या क्या है?
- 20. यूएसएसडी संदेश में अधिकतम वर्णों की संख्या क्या है?
- 21. विंडोज़ में ड्राइव की अधिकतम संख्या?
- 22. आईफोन मोबाइल सफारी, कितने अधिकतम समानांतर http कनेक्शन?
- 23. एक प्रक्रिया में लोड किए गए एपडोमेन की अधिकतम संख्या
- 24. node.js में खुले कनेक्शन की संख्या कैसे जांचें?
- 25. बैश तर्कों की अधिकतम संख्या! = अधिकतम संख्या सीपी तर्क?
- 26. अक्षरों की अधिकतम संख्या स्ट्रिंगबिल्डर
- 27. समवर्ती डीबी कनेक्शन पूल हास्केल
- 28. खुले कनेक्शनों की संख्या और एक कनेक्शन
- 29. mongodb और अधिकतम कनेक्शन
- 30. समवर्ती कनेक्शन और प्रदर्शन?
यह ध्यान में रखा जाना चाहिए कि सभी बंदरगाह केवल बंदरगाह हैं, कम समूह को आरक्षित माना जाता है। 1024 से कम किसी भी चीज़ के साथ गड़बड़ करने का असर कुछ अप्रत्याशित तोड़ सकता है। उदाहरण के लिए, आपने अनुरोध स्वीकार करने के लिए पोर्ट 80 खोला है, लेकिन आप इसे स्वीकार नहीं कर सकते क्योंकि आप इससे डेटा भेज रहे हैं। – Incognito
गुप्त, मुझे आपकी टिप्पणियां पसंद हैं, लेकिन क्या आप कृपया कुछ और बता सकते हैं? 1024 बाइट्स या केबी में है? अगर मैं 64-बिट यूनिक्स सर्वर से http अनुरोध भेज रहा हूं, तो अधिकतम मैं क्या भेज सकता हूं? धन्यवाद! – trillions
@Atom कोड अब 3/23/13 के रूप में v1.0.3 पर संकलित नहीं है। क्या आप इसे ठीक कर सकते हैं? –