1、求50到100并发的服务器配置?
50-100并发,如果是网站的话,数量就很少,用单路四核的配置就可以了。如果是做erp,oa软件之类的,至少得用双路四核SAS硬盘的才可以。
你可以看看国产品牌正睿的这款双路四核服务器。标配一颗至强E5506四核处理器,英特尔5500服务器芯片组主板,2G DDR3 REG ECC 1333MHz内存,SAS 300G 15000转/分钟企业级硬盘,双千兆网卡,性能可以说是非常不错。如果以后随着业务量的增长,觉得性能不够用了,还可以扩展到两颗处理器,达成8颗处理核心,最大支持24GB DDR3 REG ECC高速容错校验内存。
产品型号:I247789S-E
产品类型:双路四核塔式服务器
处 理 器:Xeon E5506
内 存:2G DDR3 REG ECC
硬 盘:SAS 300G
机 构:塔式
价 格:¥7999
购买即赠 《200元电子正睿券》
银牌服务
重庆五年免费上门服务,全国三年免费上门服务,关键部件三年以上免费质保。
给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门服务,在业界口碑很不错。
2、服务器的并发是什么意思,怎么计算的!
服务器并发指的是多个用户同时访问数据库中的同一字段的行为。这样的用户行为对于服务器的性能是一种考验。
但是,再好的服务器也有自己的性能上限,当并发用户数过多的时候,再好的服务器也支持不住。事实上,我们在生活中经常能遇到由于并发用户过多而导致的系统缓慢甚至瘫痪现象。比方说,很多使用过那些在线考试报名系统的朋友都会发现,半夜登录系统报名比白天登录系统报名要容,网页反应速度也要快一些,这就是由于晚上的并发用户数比较小的原因。
对于IT运维人员来说服务器并发是恐怖的,因为服务器的最大用户并发数并不是IT运维人员所能控制的,我们能做到的只是采用各种手段来提升系统的性能,提升服务器的性能利用率。
3、1000个用户并发的网站服务器大概需要什么样的配置?
并发数
不能作为配置参考
关键是你网站
和数据的性质啊
说个例子你就明白了
如果是视频站
并发1000
那可实实在在同时的高流量并发
必须高带宽
高配置应对
可如果是文字小说站呢
那就算并发也没那么大影响
你也知道你普通的并发
和那8000的区别了
所以关键不是数字
而是性质
决定配置
4、高并发的服务器有什么模式
服务程序最为关键的设计是并发服务模型,当前有以下几种典型的模型:
- 单进程服务,使用非阻塞IO
使用一个进程服务多个客户,通常与客户通信的套接字设置为非阻塞的,阻塞只发生在select()、poll()、epoll_wait()等系统调用上面。这是一种行之有效的单进程状态机式服务方式,已被广泛采用。
缺点是它无法利用SMP(对称多处理器)的优势,除非启动多个进程。此外,它尝试就绪的IO文件描述符后,立即从系统调用返回,这会导致大量的系统调用发生,尤其是在较慢的字节传输时。
select()本身的实现也是有局限的:能打开的文件描述符最多不能超过FD_SETSIZE,很容易耗尽;每次从select()返回的描述符组中扫描就绪的描述符需要时间,如果就绪的描述符在末尾时更是如此(epoll特别彻底修复了这个问题)。
- 多进程服务,使用阻塞IO
也称作 accept/fork 模型,每当有客户连线时产生一个新的进程为之服务。这种方式有时是必要的,比如可以通过操作系统获得良好的内存保护,可以以不同的用户身份运行程序,可以让服务运行在不同的目录下面。但是它的缺点也很明显:进程比较占资源,进程切换开销太大,共享某些信息比较麻烦。Apache 1.3就使用了这种模型,MaxClients数很容易就可以达到。
- 多线程服务,使用阻塞IO
也称之 accept/pthread_create模型,有新客户来时创建一个服务线程而不是服务进程。这解决了多进程服务的一些问题,比如它占用资源少,信息共享方便。但是麻烦在于线程仍有可能消耗光,线程切换也需要开销。
- 混合服务方式
所谓的混合服务方式,以打破服务方和客户方之间严格的1:1关系。基本做法是:
新客户到来时创建新的工作线程,当该工作线程检测到网络IO会有延迟时停止处理过程,返回给Server一个延迟处理状态,同时告诉 Server被延迟的文件描述符,延迟超时时间。Server会在合适的时候返回工作线程继续处理。注意这里的工作线程不是通过 pthread_create()创建的,而是被包装在专门用于处理延迟工作的函数里。
这里还有一个问题,工作线程如何检测网络IO会有延迟?方法有很多,比如设置较短的超时时间调用poll(),或者甚至使用非阻塞IO。如果是套接字,可以设置SO_RCVTIMEO和SO_SNDTIMEO选项,这样更有效率。
除了延迟线程,Server还应提供了未完成线程的支持。
如有有特别耗费时间的操作,你可以在完成部分工作后停止处理,返回给Server一个未完成状态。这样Server会检查工作队列是否有别的线程,如果有则让它们运行,否则让该工作线程继续处理,这可以防止某些线程挨饿。
典型的一个混合服务模型开源实现ServerKit
Serverkit的这些线程支持功能可简化我们的服务程序设计,效率上应该也是有保证的。
2. 队列(queue)
ServerKit提供的队列是一个单向链表,队列的存取是原子操作,如果只有一个执行单元建议不要用,因为原子操作的开销较大。
3. 堆(heap)
malloc()分配内存有一定的局限,比如在多线程的环境里,需要序列化内存分配操作。ServerKit提供的堆管理函数,可快速分配内存,可有效减少分配内存的序列化操作,堆的大小可动态增长,堆有引用计数,这些特征比较适合多线程环境。目前ServerKit堆的最大局限是分配单元必须是固定大小。
4. 日志记录
日志被保存在队列,有一个专门的线程处理队列中的日志记录:它或者调用syslog()写进系统日志,或者通过UDP直接写到远程机器。后者更有效。
5. 读写锁
GNU libc也在pthreads库里实现了读写锁,如果定义了__USE_UNIX98就可以使用。不过ServerKit还提供了读写锁互相转换的函数,这使得锁的应用更为弹性。比如拥有读锁的若干个线程对同一个hash表进行检索,其中一个线程检索到了数据,此时需要修改它,一种办法是获取写锁,但这会导致释放读锁和获取写锁之间存在时间窗,另一种办法是使用ServerKit提供的函数把读锁转换成写锁,无疑这种方式更有效率。
除了以上这些功能,ServerKit还提供了数据库连接池的管理(当前只支持MySQL)和序列化(Sequences),如感兴趣可参见相关的API文档。
二、ServerKit服务模块编写
ServerKit由3部分组成:server程序,负责加载服务模块、解析配置文件、建立数据库连接池;libserver,动态链接库,提供所有功能的库支持,包括server本身也是调用这个库写的;API,编程接口,你编写的服务模块和ServerKit框架进行对话的接口。
ServerKit需要libConfuse解析配置文件,所以出了安装ServerKit,还需要安装libConfuse。关于libConfuse可参考 http://www.nongnu.org/confuse/ 。
下面我们看一个简单的服务模块FOO:
#include <confuse.h>
#include <server.h>
static long int sleep_ration;
static int FOO_construct()
{
fprintf(stderr, "FOO_construct\n");
return 1;
}
static int FOO_prestart(cfg_t *configuration)
{
fprintf(stderr, "FOO_prestart\n");
return 1;
}
static void * FOO_operator(void *foobar)
{
fprintf(stderr, "FOO_operator\n");
for(;;) sleep(sleep_ration);
return NULL;
}
static void FOO_report(void)
{
fprintf(stderr, "FOO_report\n");
}
static cfg_opt_t FOO_config[] = {
CFG_SIMPLE_INT("sleep_ration", &sleep_ration),
CFG_END()
};
static char *FOO_authors[] = {"Vito Caputo <[email protected]>", NULL};
SERVER_MODULE(FOO,0,0,1,"Example mole that does nothing but sleep")按以下方法编译:
$ gcc -c -fPIC -pthread -D_REENTRANT -g FOO.c
$ gcc -shared -lserver -lconfuse -lpthread -g -e __server_mole_main -o FOO.so FOO.o
-e选项指定程序运行入口,这使得你可以直接在命令行敲 ./FOO.so 运行模块。
server程序根据环境变量SERVER_PERSONALITY_PATH定位主目录,并查找主目录下的c11n作为配置文件,动态加载的模块需放在主目录下的moles目录。
$ export SERVER_PERSONALITY_PATH=`pwd`
$ mkdir moles
$ cp FOO.so moles
$ vi c11n
c11n的内容:
identity = "any_id"
FOO {
sleep_ration = 1;
}
identity标识server实例,用ps可看到程序名称形如server.identity,本例为server.any_id。
执行server启动服务程序。
三、ServerKit其他功能缺陷
缺乏daemon模式;
只能运行在Linux box;
DB pool只支持MySQL;
Heap管理内存的功力有限
5、并发数与服务器配置的关系,能举个例子说明一下吗?
做网站的话,服务器要分前端和后端的,还有cache、负载平衡、网络带宽和存储系统等问题要考虑,不是单讲一台服务器就能说清楚的。
只讨论一台服务器的话,3650双路加4G内存支持到5万并发是容易达到的,即使针对业务流比较复杂的情况,也能满足很大程度的需要。
但是考虑到存储子系统,比如4块sas硬盘raid0,可能只能达到5000数量级的并发请求。如果是以另外的光纤盘阵来支持存储则可以显著提高硬盘传输带宽的性能。
最后还要考虑到你的网络带宽,对大多数网站来说,通常这才是最大的瓶颈所在。也就是说即使你的cpu、内存、硬盘都没问题,也会因为租用的网络带宽限制而影响最大的并发数。
还有一点,经过优化的网站程序对结果也有很大影响。事实上很多网站的访问体验很糟糕,其实不是因为硬件的原因,而是程序写的太烂。
很抱歉我本想以单台服务器来讲,但是说着说着又变成讲网站架构了。不如举个例子吧,如果你在这台服务器上运行discuz或动网之类的服务,在没有特别高峰的情况下,5万并发是没有问题的。
6、什么是并发通信服务器
不同于顺序服务器, 并发服务器 就要能在一个时间为多个客户端提供服务。 例如,一个 聊天服务器 可能服务一个特定的客户端数小时 不同于顺序服务器, 并发服务器 就要能在一个时间为多个客户端提供服务。 例如,一个 聊天服务器 可能服务一个特定的客户端数小时 ──在停止为这个客户端服务之前服务器不能等待, 除非是在等待一下个客户端到来之前的间隙才能等待。── 在停止为这个客户端服务之前服务器不能等待, 除非是在等待一下个客户端到来之前的间隙才能等待。 http:/ /cnsnap.cn.freebsd.org/doc/zh_ CN.GB2312/books/developers- handbook/sockets-concurrent- servers.html
7、1000用户并发的网站服务器大概需要什么样的配置
并发数 不能作为配置参考
关键是你网站 和数据的性质啊
说个例子你就明白了
如果是视频站 并发1000 那可实实在在同时的高流量并发
必须高带宽 高配置应对
可如果是文字小说站呢 那就算并发也没那么大影响
你也知道你普通的并发 和那8000的区别了
所以关键不是数字 而是性质 决定配置
8、什么是服务器并发量?并发量如何计算
并发的意思是指网站在同一时间访问的人数,人数越大,瞬间带宽要求更高。服务器并发量分为:1.业务并发用户数;2.最大并发访问数;3.系统用户数;4.同时在线用户数;
说明服务器实际压力,能承受的最大并发访问数,既取决于业务并发用户数,还取决于用户的业务场景,这些可以通过对服务器日志的分析得到。
一般只需要分析出典型业务(用户常用,最关注的业务操作)
给出一个估算业务并发用户数的公式(测试人员一般只关心业务并发用户数)
C=nL/T
C^=C+3×(C的平方根)
C是平均的业务并发用户数、n是login session的数量、L是login session的平均长度、T是指考察的时间段长度、C^是指业务并发用户数的峰值。
假设OA系统有1000用户,每天400个用户发访问,每个登录到退出平均时间2小时,在1天时间内用户只在8小时内使用该系统。
C=400×2/8=100
C^=100+3×(100的平方根)=100+3×10=130
另外,如果知道平均每个用户发出的请求数u,则系统吞吐量可以估算为u×C
精确估算,还要考虑用户业务操作存在一定的时间集中性(比如上班后1小时内是OA系统高峰期),采用公式计算仍然会存在偏差。
285-104-1346
9、什么是多线程并发服务器
有多个 CPU 可用。单核机器上多线程的优势不明显。
线程间有共享数据。如果没有共享数据,用模型 3b 就行。虽然我们应该把线程间的共享数据降到最低,但不代表没有;
共享的数据是可以修改的,而不是静态的常量表。如果数据不能修改,那么可以在进程间用 shared memory,模式 3 就能胜任;
提供非均质的服务。即,事件的响应有优先级差异,我们可以用专门的线程来处理优先级高的事件。防止优先级反转;
latency 和 throughput 同样重要,不是逻辑简单的 IO bound 或 CPU bound 程序;
利用异步操作。比如 logging。无论往磁盘写 log file,还是往 log server 发送消息都不应该阻塞 critical path;
能 scale up。一个好的多线程程序应该能享受增加 CPU 数目带来的好处,目前主流是 8 核,很快就会用到 16 核的机器了。
具有可预测的性能。随着负载增加,性能缓慢下降,超过某个临界点之后急速下降。线程数目一般不随负载变化。
多线程能有效地划分责任与功能,让每个线程的逻辑比较简单,任务单一,便于编码。而不是把所有逻辑都塞到一个 event loop 里,就像 Win32 SDK 程序那样。