1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> [Nel] Network Connections</TITLE>
<LINK REL="Index" HREF="index.html" >
<LINK REL="made" HREF="mailto:thomas.wright1%40ntlworld.com">
<LINK REL="Previous" HREF="000326.html">
<LINK REL="Next" HREF="000317.html">
</HEAD>
<BODY BGCOLOR="#ffffff">
<H1>[Nel] Network Connections</H1>
<B>Tom wright</B>
<A HREF="mailto:thomas.wright1%40ntlworld.com"
TITLE="[Nel] Network Connections">thomas.wright1@ntlworld.com</A><BR>
<I>Thu, 1 Mar 2001 08:48:29 -0000</I>
<P><UL>
<LI> Previous message: <A HREF="000326.html">[Nel] Compile error</A></li>
<LI> Next message: <A HREF="000317.html">[Nel] Network Connections</A></li>
<LI> <B>Messages sorted by:</B>
<a href="date.html#315">[ date ]</a>
<a href="thread.html#315">[ thread ]</a>
<a href="subject.html#315">[ subject ]</a>
<a href="author.html#315">[ author ]</a>
</LI>
</UL>
<HR>
<!--beginarticle-->
<PRE>This is a multi-part message in MIME format.
------=_NextPart_000_000B_01C0A22C.632195A0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Guys/Gals,
Having followed your arguements so far, i though i would chuck in my 2 p =
worth.
1) i think you are going to find it very difficult to scale a server to =
5000 concurrent users, using any kind of scheme unless its a BIG server. =
Look at EQ currently, they struggle with 2000. But this is just my =
opinion :-) so feel free to ignore it.
2) On windows NT/2k, using async sockets with events is a very efficent =
way of handling socket comms, and its quite easy to demultiplex the =
events to work out which socket caused the event. I would recommend =
this route, as one thread could then wait for events to be generated on =
say 30 sockets and then take appropriate action. unfortunately i can =
not tell you how well this is going to scale :-( Just look up WSAEvents =
for READ, SEND and CLOSE. It does make your sending more entertaining =
however :-)
3) Windows did support something called micro threads, which had a much =
lower over head than traditional threads. These ( if i remember =
correctly ) were designed specifically for scalable IO ( as in IIS ). =
Some time looking here may well yield some useful results.
4) Some OS's have limits to the size of the array to select, Windows is =
one of them, typical values seem to be 64. However using values this =
large, you are going to spend time thrashing the array looking for the =
source of the select, with events this is much easier and quicker, tho =
not linux compatible. Wrapping up the comms like this specific to each =
platform is not going to be to hard, just code to a common interface.
Regards
Tom
PS A binary of the next release for windows would be nice, takes HOURS =
to build :-)
------=_NextPart_000_000B_01C0A22C.632195A0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.3103.1000" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Guys/Gals,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Having followed your arguements so far, =
i though i=20
would chuck in my 2 p worth.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>1) i think you are going to find it =
very difficult=20
to scale a server to 5000 concurrent users, using any kind of scheme =
unless its=20
a BIG server.&nbsp; Look at EQ currently, they struggle with 2000.&nbsp; =
But=20
this is just my opinion :-) so feel free to ignore it.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>2) On windows NT/2k, using async =
sockets with=20
events is a very efficent way of handling socket comms, and its quite =
easy to=20
demultiplex the events to work out which socket caused the event.&nbsp; =
I would=20
recommend this route, as one thread could then wait for events to be =
generated=20
on say 30 sockets and then take appropriate action.&nbsp; unfortunately =
i can=20
not tell you how&nbsp;well this is going to scale :-( Just look up =
WSAEvents for=20
READ, SEND and CLOSE.&nbsp; It does make your sending more entertaining =
however=20
:<i>-)</FONT></DIV>
</I><DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>3) Windows did support something called =
micro=20
threads, which had a much lower over head than traditional =
threads.&nbsp; These=20
( if i remember correctly ) were designed specifically for scalable IO ( =
as in=20
IIS ).&nbsp; Some time looking here may well yield some useful=20
results.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>4) Some OS's have limits to the size of =
the array=20
to select, Windows is one of them, typical values seem to be 64.&nbsp; =
However=20
using values this large, you are going to spend time thrashing the array =
looking=20
for the source of the select, with events this is much easier and =
quicker, tho=20
not linux compatible.&nbsp; Wrapping up the comms like this specific to =
each=20
platform is not going to be to hard, just code to a common=20
interface.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Regards</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Tom</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>PS A binary of the next release for =
windows would=20
be nice, takes HOURS to build :-)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>
------=_NextPart_000_000B_01C0A22C.632195A0--
</pre>
<!--endarticle-->
<HR>
<P><UL>
<!--threads-->
<LI> Previous message: <A HREF="000326.html">[Nel] Compile error</A></li>
<LI> Next message: <A HREF="000317.html">[Nel] Network Connections</A></li>
<LI> <B>Messages sorted by:</B>
<a href="date.html#315">[ date ]</a>
<a href="thread.html#315">[ thread ]</a>
<a href="subject.html#315">[ subject ]</a>
<a href="author.html#315">[ author ]</a>
</LI>
</UL>
</body></html>
|