使用apache和postgres数据库建站的高手进来看看!技术讨论 用pconnect可以保证数据库常连 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是用的pg_pconnect(),我是想问用户登陆后连接数据库,然后一直连着?等用户退出网站后再断开这样是否可行?会不会带来什么副作用?这些问题用户少是体现不出来的,我是想问问那些开发过大型网站有经验的人给点意见! //但是每一个用户浏览网页时可能会在数据库产生几个线程一个用户在某一时刻浏览页面时,应该使用一个数据库连接资源,不管是一个进程,还是一个线程//一些文章谈到用连接池,但好像postgres暂时不支持连接池这个东西,不是数据库的特性,而是由语言实现的(多线程)//你们如何办到用户流量很大时,网站反应速度依旧还说得过去你需要代理、静态发布以及缓存机制 感谢乌鱼子的回答,不过有些地方需要给些意见!//一个用户在某一时刻浏览页面时,应该使用一个数据库连接资源,不管是一个进程,还是一个线程用户每连接一次数据库就产生一个进程,如果用户打开多个ie窗口(同一个网站)或不停的刷新,就会产生很多个进程。如果到达了服务器支持的进程上限,就会跳出报错信息,并且失去网站连接,此时服务器初始化,然后又回复正常。postgres默认的进程数是32,所以只要连续刷新5秒左右就会报错。要增加进程上限需要修改源代码!//连接池这个东西,不是数据库的特性,而是由语言实现的(多线程)连接池的概念是从操作系统中应用过来的,现在很多大型数据库都支持多线程,肯定都是用语言实现的了,正是因为它能提高数据库执行效率,和充分利用资源所以才慢慢跟数据库绑定在一起讨论。postgres不支持多线程,我们实验室现在做的就是让其在底层直接支持,已经修改源代码2年了,马上完工了!不过还想开发过大型网站的朋友们提供有些关于连接池的宝贵意见,我们好改进! 1. 首先确认一个问题,你说post的32个进程数限制和连接数限制是不一样的。post默认的max_connections是100,这个数量就是你所说的打开多个浏览器窗口(实际就是数据库连接、操作),而不是你所的说的进程。连续刷新5秒左右就会报错的一个可能的原因是没有及时关闭数据库连接,而造成了数据库连接数超过了最大限制,而出现被拒绝连接的状况。2. 至于数据库连接池,我感觉你们的工作有些徒劳。数据库连接池的起始很简单,在前端程序与数据库之间建立一个数据库访问层,它在初始化时创建固定数量的数据库连接(多个线程,如果post不支持多线程,那么所有的请求都会以队列的形式完成,那将是一个多么可怕的事情,post也早应该被db界扫地出门, ;) )。所有的数据库连接请求都针对与这个层,如果有空闲的连接,就使用该连接,如果没有,那么在上限数量允许的情况下创建一个数据库连接线程,用完后则由该层回收,并置于空闲状态等待下一次的调用。通过可重用的线程库,提升系统的性能。 对于你的第一个问题:通常情况下,的确是进行一次连接,在数据库中创建一个进程,连接close以后,该进程应该释放掉,以为其他连接使用!但实际情况是关闭连接以后,进程没有立即释放,而是等待一段时间,导致访问量大时,32个进程都被占用了,而没有即时释放,这不是代码的问题,而是postgres底层代码的问题!一旦出现这种情况,会导致IE“死掉”,停顿几十秒后才恢复正常! 第二个问题,你对postgres看来了解不够,现在情况是它根本不支持线程的概念,也就是说IO处理和后台处理全是由进程完成的,因此效率很低,我们加入多线程就是分开这2个部分,可以并行处理。怎么会不值得做?而是非常有必要!这个项目投入80万,事先都进行国际调查和专家咨询,不会盲目启动的! 看来这里没有用postgres构建过大型网站的高手啊!唉!失望啊! 这个项目一起30多个人,开始每个星期一个会,最后一年每天晚上一个讨论会,postgres源代码已经都读了,整个机制也基本上了解了,加多线程只是其中一个项目,花了1年多读源代码不可能就80万就了解了!还有很多功能要加,这是国家重点开发项目,就像武汉华工开发的达梦数据库,先后投入了几个亿!网站仅仅是在我们自己开发的基于postgres的数据库之上构建一个平台,测试其性能而已!不了解这个项目请不要随意下结论! 希望不要什么都是一种不懈的感觉!其实你懂的也只是皮毛,而且很多思想也是错误的!我读了1年多底层代码,而且是在一个很好的环境下共同进步,仍旧有很多不解的地方,何况你。所以做人还是谦虚点好,否则不利于你的进步! //就像武汉华工开发的达梦数据库说实话,对这些东西我还真的是“一种不懈的感觉”//不了解这个项目请不要随意下结论我为什么不了解这个项目?有话你能不能一气儿说完?//其实你懂的也只是皮毛,而且很多思想也是错误的没错,对于pg来说,我就是不懂;但我发现"思想的错误"似乎并不是我//所以做人还是谦虚点好最好是自己先做到,然后再去要求别人做到BTW:到现在我反而有些茫然了:“这位兄台到底要说些什么?” 既然能投入那么多资源到项目,为什么不用oracle?至少用mysql cluster也比postgresql,自己组织重写是为了自主版权?那是为了应用还是研发? 对乌鱼子的回答很失望,首先你认为postgres所谓的线程问题本来就是错误!既然你已承认对pg不是很熟悉,就是来学习的!请不要装专家,误导大家,有错居然不承认,自己作不出什么东西就开始瞧不起别人花了几年功夫做的。你们开发的系统烂、花的钱多,不代表全中国的都是这样!这个项目开发中有几位博士后,其他都是硕士,大家每天花10多个小时搞研究与开发,我对大家的敬业精神非常感动,你一个“不懈”就概括了!中国就是你这种人多了,所以才发展不起来!不学无术,整天批判! //到现在我反而有些茫然了:“这位兄台到底要说些什么?” 这句话应该我问你,我是来请教各位高手帮助我的!你到乱说了一通,还故装专业人士,错了还不承认。是不是刚毕业的本科生啊?如此轻抚! 这是最后一次跟你对答,不管你“懈”还是“不懈”,你以后说的我不予理睬!本贴不欢迎你! 小青年一句话抹杀多少人的辛苦!唉!这种人实在悲哉! 目前主要是搞研究,通过对底层数据库的处理机制,了解其他数据库,并为国产数据库发展出一份力。不过已经基于我们自己的数据库开发了一些应用,比如GIS地理查询,人性化多媒体操作等!网站是其中一部分,不过好像收到了现有postgres功能的限制!所以来咨询各位! 哇!成茶馆了!呵呵!怎么都讨论这些啊?楼主的确主贴没有表达清楚1不过乌鱼子也真够绝,死要面子那种。我公司也有一个这样的人,人见人厌,鸭子死了嘴巴硬那种。 楼主不要生气了,乌鱼子这种人根本就不用理他,就是那种刚毕业心高气敖那种,我参加过几次招人面试,现在毕业的那些本科生敖的像老总找工作似的。问了一大堆问题答不上来,还认为问题太偏,都是些没用的,拽的像二五八万!呵呵!受不了,直接给毙了。这些人到那个单位,那个单位倒霉! 我对pg了解不算太深入,不过看过不少文章,的确不支持线程,这也是它的一大不足,因此不适合大型网站。不过你们那里的工作还是做的很有意义的,至少我个人认为。但如何与gis,多媒体之类挂上构啊?不懂!是不是对大对象的处理方面? 还有关于数据库连接方面,建议使用pg_connect,而不要用pg_pconnect,后者是常连,每次用完要close,我以前也碰到过,close后并没有立刻释放掉进程(可以在终端提示中看到),而是隔了一会,所以pconnect多了,就会耗尽进程!换成connect虽然每次都要连接,代码麻烦一点,执行效率下降一点,但不会出错,并且同时支持的用户也多些! 这里是技术论坛,希望以后不要把这里当作斗口角的地方!有些人乱回帖就根本不用理他!影响心情!祝你们项目早日完工! 多谢没的商量的支持和意见!“拽的像二五八万”,“人见人厌”这2句话用的太经典了,概括力也强!缺乏个人最低修养的人不管在学习、工作、交往各方面都混的不行,只有靠一张嘴来缓解自己的压力,可以理解!也深表同情! 很高兴遇到一个对postgres比较了解的人,不如我们通过邮件互相联系吧?互相进步! My Email:[email protected] 2个人一唱一和还真热闹,把修养,品德挂在嘴边,实际呢?连说话都没有学会。2位都说自己是licentiate,原来社会上流传的“高学历低素质”说的就是2位。 低素质又不是你一个人认定的,而且是一个没什么文化,做皮包生意,整天靠嘴巴不靠大脑、本事吃饭的人。搞笑!我的工作只要我感觉对得起自己,同事认可,老板赏识(应该可以跟money直接挂钩吧)就够了!你的评论就跟家狗对着外人乱叫,自以为很了不起,其实人家根本不当一回事! 你回帖越多,越看出你的低俗,不要再这里丢人显眼了!做点实际工作吧!好好补补你的计算机基础知识!小孩子不知天高地厚! 2个牛人欺负一个小弟?有意思!第一次在csdn里看到这样的学术性讨论,开眼界啊!我也参加! 不过乌鱼子也真够嘴巴硬的!明明有原则性错误,就是不承认,这种人也是很少见啊!碰到这种人的确够烦的!要是现实生活中碰到,我肯定暴打他一顿,要他跪地求饶为止!我建议斑竹把这种人赶出csdn,封了他的帐号!没办法,我这人也是疾恶如仇的!乌鱼子是没吃着亏!不知在那个公司?估计混的不怎么样来这里斗嘴解闷!真够无聊的!鄙视! //你的评论就跟家狗对着外人乱叫我家里的小狗只对他认为是“坏人”的人叫,并非您说的对着外人乱叫;乱叫的狗不是好狗,譬如您的‘战友’。//自以为很了不起,其实人家根本不当一回事这话说的很好,我表示赞同//你回帖越多,越看出你的低俗这我就要借用您的一句话了,"低素质又不是你一个人认定的",虽然您有一个“忠实”边鼓手,公道自在人心//做点实际工作吧这是您说的最像样的一句话BTW:看了您和你的鼓手的回帖,我开始还真有些生气愤,后来我发现原来是我的境界没有您2位高,您2位怎么就能如此沉稳的说出如此有“份量”的话呢?看来我确实应该去读研究生,而且是中文系,毕业后再到天桥儿去实习。再借用您的二句话:“你以后说的我不予理睬”,我要去“做点实际工作”了 这帖子有意思!哈哈哈哈哈!字数都好多啊!让我看了好久! 不过得出的结论是!很佩服乌鱼子,跟几个人斗嘴! 但我也非常鄙视乌鱼子,没多少本事,不是向高手们学习,而是打嘴巴官司!支持zarmy的看法,要斑竹把他踢了!社会垃圾! 对于那些硕士博士,虽然有不少的确不怎样!但是大多数还是令我敬佩的,起码人品和敬业精神方面比我强!呵呵!支持搂主!修理乌鱼子! 没必要吵,专心讨论技术。我也在用PostgreSQL,对其不是很了解,刚刚接触。虽然功能很强大,但是32个线程,确实少了点,和Mysql比,这方面差了点。感觉适合PHP的数据库很难找,用Oracle,有点浪费,用MSSQL,不能跨平台,用Mysql,虽然支持了事务,但是功能还是弱了点,PostgreSQL线程太少,所以,只好选择Oracle了,浪费就浪费点吧。 几个假博士硕士在这里装什么吊?就算 Debian(乌鱼子) 死要面子又怎样?人之常情嘛!被别人猛贬难道连回话都不允许吗? 你那几位把别人往死里整不也是在死要面子吗? 伏尔泰说过:尽管我不同意你的观点,但我会用生命捍卫你说话的权利。 做人要厚道!尺有所长,寸有所短,这是在你熟悉的领域你充老大,不允许小弟弟发一句言,那你不熟悉的领域是不是就从来就没说过错话,没要过面子呢? 我是学中文的,也是研究生,我也经常在CSDN上看到一些兄弟写一些发人生感慨的文章,那是不是我就要冲进去鄙视他们一番,嫌他们的文章狗屁不通呢?? 做事先做人,希望与诸位共勉! 呵呵,先说啊,我近来没有什么想法,只是来看看关于讨论PostgreSQL的,呵呵,不过情况并不是如此.个人比较同意 hbgth() 的话,比较中肯,而且我看出一个问题来: 上面讨论的,至少有3-4个号是同一个人,或者是托,呵呵,CSDN常说的马甲.....所以 Debian(乌鱼子) 吃亏也是必然的,呵呵 (中国人就爱这样,包括我自己,呵呵)我赞成学术性的讨论,比较反对任何人的漫骂和争吵,希望大家保持理性,既然你们都是高学历的人才(都比我高多了,年纪估计都比我大),那就应该注意言辞,呵呵~~~~另外: 我对PostgreSQL不算了解,但是希望楼上的诸位"牛人"们能够讨论出结果来,让我们小悲瞧瞧,而不是争吵!!! 另外送 doctor2004(假医生) 几句话:没有人想,或者有资格去侮辱你的学术研究,如果你需要自尊和钱,那些都不是我们能给你的,是你的同事,老板给你的! (还有,奉劝以后别找托了,那样只会显的你很无知)你读了一年多的底层代码,我们都很佩服,如果你愿意把你的研究结果拿出来分享的话,那更好! php数组问题 php 中unlink和@unlink? php中,数组容量的问题,在线等 php SQL语句怎么只读取当天信息!! PHP session 入 mysql 需要锁表吗? smarty 二维数组的问题~ sql的问题 一个有点挑战的组合问题 apache怎样让它支持php呢 怎样在英国的服务器上显示北京日期时间? 用php实现自动截取swf中某一秒的截图?急,急,急,急 好,有谁在 LINUX下配置过php吗?
一个用户在某一时刻浏览页面时,应该使用一个数据库连接资源,不管是一个进程,还是一个线程//一些文章谈到用连接池,但好像postgres暂时不支持
连接池这个东西,不是数据库的特性,而是由语言实现的(多线程)//你们如何办到用户流量很大时,网站反应速度依旧还说得过去
你需要代理、静态发布以及缓存机制
//一个用户在某一时刻浏览页面时,应该使用一个数据库连接资源,不管是一个进程,还是一个线程
用户每连接一次数据库就产生一个进程,如果用户打开多个ie窗口(同一个网站)或不停的刷新,就会产生很多个进程。如果到达了服务器支持的进程上限,就会跳出报错信息,并且失去网站连接,此时服务器初始化,然后又回复正常。postgres默认的进程数是32,所以只要连续刷新5秒左右就会报错。要增加进程上限需要修改源代码!
//连接池这个东西,不是数据库的特性,而是由语言实现的(多线程)
连接池的概念是从操作系统中应用过来的,现在很多大型数据库都支持多线程,肯定都是用语言实现的了,正是因为它能提高数据库执行效率,和充分利用资源所以才慢慢跟数据库绑定在一起讨论。postgres不支持多线程,我们实验室现在做的就是让其在底层直接支持,已经修改源代码2年了,马上完工了!不过还想开发过大型网站的朋友们提供有些关于连接池的宝贵意见,我们好改进!
数据库连接池的起始很简单,在前端程序与数据库之间建立一个数据库访问层,它在初始化时创建固定数量的数据库连接(多个线程,如果post不支持多线程,那么所有的请求都会以队列的形式完成,那将是一个多么可怕的事情,post也早应该被db界扫地出门, ;) )。所有的数据库连接请求都针对与这个层,如果有空闲的连接,就使用该连接,如果没有,那么在上限数量允许的情况下创建一个数据库连接线程,用完后则由该层回收,并置于空闲状态等待下一次的调用。通过可重用的线程库,提升系统的性能。
第二个问题,你对postgres看来了解不够,现在情况是它根本不支持线程的概念,也就是说IO处理和后台处理全是由进程完成的,因此效率很低,我们加入多线程就是分开这2个部分,可以并行处理。怎么会不值得做?而是非常有必要!这个项目投入80万,事先都进行国际调查和专家咨询,不会盲目启动的!
看来这里没有用postgres构建过大型网站的高手啊!唉!失望啊!
希望不要什么都是一种不懈的感觉!其实你懂的也只是皮毛,而且很多思想也是错误的!我读了1年多底层代码,而且是在一个很好的环境下共同进步,仍旧有很多不解的地方,何况你。所以做人还是谦虚点好,否则不利于你的进步!
说实话,对这些东西我还真的是“一种不懈的感觉”//不了解这个项目请不要随意下结论
我为什么不了解这个项目?有话你能不能一气儿说完?//其实你懂的也只是皮毛,而且很多思想也是错误的
没错,对于pg来说,我就是不懂;但我发现"思想的错误"似乎并不是我//所以做人还是谦虚点好
最好是自己先做到,然后再去要求别人做到BTW:
到现在我反而有些茫然了:“这位兄台到底要说些什么?”
//到现在我反而有些茫然了:“这位兄台到底要说些什么?”
这句话应该我问你,我是来请教各位高手帮助我的!你到乱说了一通,还故装专业人士,错了还不承认。是不是刚毕业的本科生啊?如此轻抚!
这是最后一次跟你对答,不管你“懈”还是“不懈”,你以后说的我不予理睬!本贴不欢迎你!
小青年一句话抹杀多少人的辛苦!唉!这种人实在悲哉!
楼主不要生气了,乌鱼子这种人根本就不用理他,就是那种刚毕业心高气敖那种,我参加过几次招人面试,现在毕业的那些本科生敖的像老总找工作似的。问了一大堆问题答不上来,还认为问题太偏,都是些没用的,拽的像二五八万!呵呵!受不了,直接给毙了。这些人到那个单位,那个单位倒霉!
我对pg了解不算太深入,不过看过不少文章,的确不支持线程,这也是它的一大不足,因此不适合大型网站。不过你们那里的工作还是做的很有意义的,至少我个人认为。但如何与gis,多媒体之类挂上构啊?不懂!是不是对大对象的处理方面?
还有关于数据库连接方面,建议使用pg_connect,而不要用pg_pconnect,后者是常连,每次用完要close,我以前也碰到过,close后并没有立刻释放掉进程(可以在终端提示中看到),而是隔了一会,所以pconnect多了,就会耗尽进程!换成connect虽然每次都要连接,代码麻烦一点,执行效率下降一点,但不会出错,并且同时支持的用户也多些!
这里是技术论坛,希望以后不要把这里当作斗口角的地方!有些人乱回帖就根本不用理他!影响心情!祝你们项目早日完工!
很高兴遇到一个对postgres比较了解的人,不如我们通过邮件互相联系吧?互相进步!
My Email:[email protected]
2位都说自己是licentiate,原来社会上流传的“高学历低素质”说的就是2位。
你回帖越多,越看出你的低俗,不要再这里丢人显眼了!做点实际工作吧!好好补补你的计算机基础知识!小孩子不知天高地厚!
不过乌鱼子也真够嘴巴硬的!明明有原则性错误,就是不承认,这种人也是很少见啊!碰到这种人的确够烦的!要是现实生活中碰到,我肯定暴打他一顿,要他跪地求饶为止!我建议斑竹把这种人赶出csdn,封了他的帐号!没办法,我这人也是疾恶如仇的!乌鱼子是没吃着亏!不知在那个公司?估计混的不怎么样来这里斗嘴解闷!真够无聊的!鄙视!
我家里的小狗只对他认为是“坏人”的人叫,并非您说的对着外人乱叫;乱叫的狗不是好狗,譬如您的‘战友’。//自以为很了不起,其实人家根本不当一回事
这话说的很好,我表示赞同//你回帖越多,越看出你的低俗
这我就要借用您的一句话了,"低素质又不是你一个人认定的",虽然您有一个“忠实”边鼓手,公道自在人心//做点实际工作吧
这是您说的最像样的一句话BTW:
看了您和你的鼓手的回帖,我开始还真有些生气愤,后来我发现原来是我的境界没有您2位高,您2位怎么就能如此沉稳的说出如此有“份量”的话呢?看来我确实应该去读研究生,而且是中文系,毕业后再到天桥儿去实习。再借用您的二句话:“你以后说的我不予理睬”,我要去“做点实际工作”了
不过得出的结论是!很佩服乌鱼子,跟几个人斗嘴!
但我也非常鄙视乌鱼子,没多少本事,不是向高手们学习,而是打嘴巴官司!支持zarmy的看法,要斑竹把他踢了!社会垃圾!
对于那些硕士博士,虽然有不少的确不怎样!但是大多数还是令我敬佩的,起码人品和敬业精神方面比我强!呵呵!支持搂主!修理乌鱼子!
虽然功能很强大,但是32个线程,确实少了点,和Mysql比,这方面差了点。
感觉适合PHP的数据库很难找,用Oracle,有点浪费,用MSSQL,不能跨平台,用Mysql,虽然支持了事务,但是功能还是弱了点,PostgreSQL线程太少,所以,只好选择Oracle了,浪费就浪费点吧。
伏尔泰说过:尽管我不同意你的观点,但我会用生命捍卫你说话的权利。
做人要厚道!尺有所长,寸有所短,这是在你熟悉的领域你充老大,不允许小弟弟发一句言,那你不熟悉的领域是不是就从来就没说过错话,没要过面子呢?
我是学中文的,也是研究生,我也经常在CSDN上看到一些兄弟写一些发人生感慨的文章,那是不是我就要冲进去鄙视他们一番,嫌他们的文章狗屁不通呢??
做事先做人,希望与诸位共勉!
个人比较同意 hbgth() 的话,比较中肯,而且我看出一个问题来: 上面讨论的,至少有3-4个号是同一个人,或者是托,呵呵,CSDN常说的马甲.....所以 Debian(乌鱼子) 吃亏也是必然的,呵呵 (中国人就爱这样,包括我自己,呵呵)我赞成学术性的讨论,比较反对任何人的漫骂和争吵,希望大家保持理性,既然你们都是高学历的人才(都比我高多了,年纪估计都比我大),那就应该注意言辞,呵呵~~~~另外: 我对PostgreSQL不算了解,但是希望楼上的诸位"牛人"们能够讨论出结果来,让我们小悲瞧瞧,而不是争吵!!!