And on some unrelated note; is it possible to load balance on multiple server instances for scalability?
Think of it like; server1 -- port 9090 server2 -- port 9091 server3 -- port 9092 server4 -- port 9093 And each of the server apps is running as a TThreadedServer. Now with multiple server apps running, I hope to serve more concurrent client requests per second. How can I go about the load balancing? Has anyone done something like that? On Tue, May 27, 2014 at 9:55 PM, Phillip Simbwa <[email protected]> wrote: > @Mike: > Will definitely consider implementing that. > > Thanks Aaron and Mike for your help. > > Really appreciate it. > > > On Tue, May 27, 2014 at 9:39 PM, Mike Riley <[email protected]> wrote: >> This is probably the single most common error that anyone will see when >> they try to set up thrift, it usually means that your server is outputting >> something other than the output generated by thrift, and particularly in >> the case of PHP, it's most commonly just an error, warning or notice that >> gets emmitted and not handled elsewhere, hence output along with the rest >> of your thrift bytes. The client sees this as nonsense and freaks out. >> >> The best way to debug this is: >> >> set display_errors=0 >> install your own error handler for the more serious problems that logs them >> somewhere, but doesn't output them >> catch all exceptions thrown during the duration of your thrift RPC call and >> throw them back over the wire using some kind of generic extension to >> TException so that the client can interpret them >> >> you should be able to diagnose the problem using a combination of your >> error logs and inspecting any thrown exceptions client side >> >> >> >> On Tue, May 27, 2014 at 2:31 PM, Phillip Simbwa <[email protected]> wrote: >> >>> @Aaron: >>> >>> Thanks for your quick response. >>> >>> Let me look into that and see.. >>> >>> Thanks >>> >>> >>> On Tue, May 27, 2014 at 8:07 PM, Aaron Mefford <[email protected]> wrote: >>> > Have you verified that the Protocol and Transport on each end are the >>> same? >>> > Are you using a client with the same generated stubs, or is the client in >>> > another language? >>> > >>> > It looks like the server was expecting to read more bytes than it was >>> sent. >>> > This would seem to point to some difference in expectations between the >>> > client and the server. For instance, if the client were using the >>> compact >>> > binary protocol it would be sending fewer bytes than would be expected by >>> > the standard binary protocol. >>> > >>> > I am by no means an expert in Thrift or PHP but wanted to offer my >>> > observations in case they happen to help you find your problem. >>> > >>> > >>> > On 5/27/14, 11:00 AM, Phillip Simbwa wrote: >>> >> >>> >> Greetings, >>> >> >>> >> I think the thrift-0.9.1 php libs have a bug somewhere. I seem to get >>> >> this when I try to read the returned values from a client RPC call. >>> >> >>> >> >>> >> 2014/05/27 18:56:54 [error] 8129#0: *9 FastCGI sent in stderr: "PHP >>> >> message: PHP Fatal error: Uncaught exception >>> >> 'Thrift\Exception\TTransportException' with message 'TSocket: timed >>> >> out reading 4 bytes from localhost:9090' in >>> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TSocket.php:274 >>> >> Stack trace: >>> >> #0 >>> >> >>> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TTransport.php(74): >>> >> Thrift\Transport\TSocket->read(4) >>> >> #1 >>> >> >>> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TBufferedTransport.php(113): >>> >> Thrift\Transport\TTransport->readAll(4) >>> >> #2 >>> >> >>> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Protocol/TBinaryProtocol.php(305): >>> >> Thrift\Transport\TBufferedTransport->readAll(4) >>> >> #3 >>> >> >>> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Protocol/TBinaryProtocol.php(197): >>> >> Thrift\Protocol\TBinaryProtocol->readI32(NULL) >>> >> #4 /srv/www/vhosts/async/lib/v1/php/gen-php/wiadSysAPIv1.php(114): >>> >> Thrift\Protocol\TBinaryProtocol->readMessageBegin(NULL, 0, 0) >>> >> #5 /srv/www/vhosts/async/lib/v1/php/gen-php/wiadSysAPIv1.php(82): >>> >> wiadSysAPIv1Client->recv_createUser() >>> >> >>> >> >>> >> And my .thrift file looks like this: >>> >> >>> >> struct useraccount { >>> >> 1:i64 uid, >>> >> 2:string owner, >>> >> 3:string email, >>> >> 4:string passwd, >>> >> 5:i32 enabled, >>> >> 6:i32 deleted, >>> >> 7:i32 gid, >>> >> 8:string creator >>> >> } >>> >> >>> >> struct auditf { >>> >> 1:string schema, >>> >> 2:string table, >>> >> 3:i64 uid, >>> >> 4:i64 gid, >>> >> 5:string account, >>> >> 6:string ip, >>> >> 7:string qtype, >>> >> 8:string vafter, >>> >> 9:string vbefore, >>> >> 10:string detail >>> >> } >>> >> >>> >> service wiadSysAPIv1 { >>> >> i32 ping(), >>> >> string createUser(1:auditf af, 2:useraccount u) >>> >> } >>> >> >>> >> >>> >> Can someone advise on how I can get around this? >>> >> >>> >> >>> > >>> >>> >>> >>> -- >>> - Phillip. >>> >>> "Aoccdrnig to rscheearch at an Elingsh uinervtisy, it deosn't mttaer in >>> waht >>> oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist >>> and lsat ltteer are in the rghit pclae. >>> The rset can be a toatl mses and >>> you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed >>> ervey lteter by it slef but the wrod as a wlohe and the biran fguiers it >>> out aynawy." >>> > > > > -- > - Phillip. > > "Aoccdrnig to rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht > oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist > and lsat ltteer are in the rghit pclae. > The rset can be a toatl mses and > you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed > ervey lteter by it slef but the wrod as a wlohe and the biran fguiers it > out aynawy." -- - Phillip. "Aoccdrnig to rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer are in the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe and the biran fguiers it out aynawy."
