[pgpool-general: 429] Re: strange load balancing issue in Solaris
Tatsuo Ishii
ishii at postgresql.org
Wed May 9 17:37:21 JST 2012
> The code you have sent is same in child.c.
No.
pool_log("r: %f total_weight: %f", r, total_weight);
You need to add the line above to get usefull information.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
> I have attached the log file. Please check
>
>
> --Aravinth
>
>
> On Tue, May 8, 2012 at 6:20 AM, Tatsuo Ishii <ishii at postgresql.org> wrote:
>
>> I suspect there's some portablity issue with load balance code. The
>> actual source code is in select_load_balancing_nodechild.c).
>> Please modify source code and connect to pgpool by using psql.
>> Please send the log output.
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>> English: http://www.sraoss.co.jp/index_en.php
>> Japanese: http://www.sraoss.co.jp
>>
>> int select_load_balancing_node(void)
>> {
>> int selected_slot;
>> double total_weight,r;
>> int i;
>>
>> /* choose a backend in random manner with weight */
>> selected_slot = MASTER_NODE_ID;
>> total_weight = 0.0;
>>
>> for (i=0;i<NUM_BACKENDS;i++)
>> {
>> if (VALID_BACKEND(i))
>> {
>> total_weight += BACKEND_INFO(i).backend_weight;
>> }
>> }
>> r = (((double)random())/RAND_MAX) * total_weight;
>> pool_log("r: %f total_weight: %f", r, total_weight); <--
>> add this
>>
>> total_weight = 0.0;
>> for (i=0;i<NUM_BACKENDS;i++)
>> {
>> if (VALID_BACKEND(i) && BACKEND_INFO(i).backend_weight >
>> 0.0)
>> {
>> if(r >= total_weight)
>> selected_slot = i;
>> else
>> break;
>> total_weight += BACKEND_INFO(i).backend_weight;
>> }
>> }
>>
>> pool_debug("select_load_balancing_node: selected backend id is %d",
>> selected_slot);
>> return selected_slot;
>> }
>>
>>
>> > Hi Tatsuo, Thanks for the reply.
>> >
>> > The normalized weights are 0.5 for both nodes and the selected node is
>> always the same node. I hope then it's srandom().
>> >
>> >
>> > Any idea to solve this srandom issue
>> >
>> >
>> > Thanks and Regards,
>> > Aravinth
>> >
>> >
>> > ________________________________
>> > From: Tatsuo Ishii <ishii at postgresql.org>
>> > To: aravinth at mafiree.com
>> > Cc: pgpool-general at pgpool.net
>> > Sent: Tuesday, May 1, 2012 4:41 AM
>> > Subject: Re: [pgpool-general: 396] strange load balancing issue in
>> Solaris
>> >
>> > First of all please check "normalized" weights are as you expected.
>> > Run "show pool_status;" and see "backend_weight0", "backend_weight1"
>> > section. You see a floating point numbers, which are the normalized
>> > weight between 0.0 and 1.0. If you see both are 0.5, primary and
>> > standby are given same weight.
>> >
>> > If they are ok, I suspect srandom() function behavior is different
>> > from other platforms. Pgpool-II chooses the load balance node by using
>> > srandom(). select_load_balancing_node() is the function which is
>> > responsible for selecting the load balance node. If you run pgpool-II
>> > with -d (debug) option, you will see following in the log:
>> >
>> > pool_debug("select_load_balancing_node: selected backend id is %d",
>> selected_slot);
>> >
>> > If backend_weight in show pool_status are fine but the line above
>> > always shows same number, it is the sign that we have problem with
>> > srandom().
>> > --
>> > Tatsuo Ishii
>> > SRA OSS, Inc. Japan
>> > English: http://www.sraoss.co.jp/index_en.php
>> > Japanese: http://www.sraoss.co.jp
>> >
>> >> Hi All,
>> >>
>> >> I am facing a strange issue in load balancing with replication mode set
>> to
>> >> true in Solaris. Load balancing algorithm always select the same node
>> >> whatever may be the backend weight
>> >>
>> >> Here is the scenario.
>> >>
>> >> I have a pgpool installed installed in 1 server
>> >> 2 postgres nodes in other 2 servers
>> >> replication mode set to true and load balancing set to true
>> >> backend weight of the 2 nodes is 1.
>> >>
>> >> When I fire the queries manuall using different connections or using
>> >> pgbench all the queries hit the same node. Load balancing algorithm
>> always
>> >> select the same node.
>> >> No effect in changing the backend weight. Only when I set backend
>> weight to
>> >> 0 hits go to the other server.
>> >>
>> >>
>> >> I face this issue only in solaris. The same setup in other servers (
>> centos
>> >> ,RHEL, ubunt etc) does the load balancing perfectly.
>> >>
>> >> Also tries various postgres versions and pgpool version with same
>> result.
>> >> But every version runs fine in other servers.
>> >>
>> >> Has anyone faced this issue?
>> >>
>> >> Any information would highly helpful.
>> >>
>> >> Regards,
>> >> Aravinth
>> _______________________________________________
>> pgpool-general mailing list
>> pgpool-general at pgpool.net
>> http://www.pgpool.net/mailman/listinfo/pgpool-general
>>
More information about the pgpool-general
mailing list