Re: multiple instance question, and more
Re: multiple instance question, and more
- Subject: Re: multiple instance question, and more
- From: Matteo Centro <email@hidden>
- Date: Fri, 15 Jul 2011 23:17:27 +0200
Are MySQL tables InnoDB or MyISAM? You shouldn't have the PK problem with InnoDB...
Also for the CPU issue, how many instances are you running
What are the deployment variables?
In any case, the Apple Push Notification server is unbelievably fast, if you send 50k notifications at the same time you could end up with "a lot" of your clients calling home at the same time and you could easily clog your application if it can't handle that amount of concurrent connections... you could try to spread the notifications in time and see if it helps.
Matteo
On 15/lug/2011, at 22:57, Pascal Robert <email@hidden> wrote:
>
> Le 2011-07-15 à 16:52, Andrew Kinnie a écrit :
>
>> Greetings,
>>
>> I have 2 issues, the first of which I had before WOWODC, and the second burst into the open yesterday.
>>
>> I have an app, an ERRest app, acting as a push notification server, although thus far now push notifications have gone out to the public, it works for testing. The app is connected to by nearly 50,000 iOS devices which have our iOS app installed. The iOS app connects to Apple to get a token, then calls home (my server) and tries to register itself with my server so that when we do send out notifications, we know which device tokens want which types of notifications. The iOS apps on individual iOS devices connect when running, and send information to my server about the device, the id of the device, other data including the token and whether they want the 4 notification types to be on or off. All this works. (there are approximately 50,000 registered application_device rows currently, though we've not sent any publicly visible notifications). When the app runs, the devices also try and get the last notification of any type that the device has been set to ask for, and display that in a drop down (data pulled from my server)
>>
>> The server uses ERRest to receive this information and to create a device (actually an "ApplicationDevice" object) based on passed in json, checks the database (MySQL) to see if there is an existing row in my application_device entity/table for the app, and the device id (udid) and if so, updates it with the newly created device's data before discarding the new device and saving the changes in the fetched one. Otherwise, it saves the newly created device.
>>
>> However,
>>
>> 1. Occasionally, two devices try to be created at the same time with the same primary key (which is provided by the EO_PK_Table in the MySQL database). The second device fails with an exception. I gather this is because two separate devices are connecting to the server at approximately the same time, both asking the EO_PK_Table for the next primary key for the entity, then do some things, then try and save. First one succeeds, and the second fails because an object with the PK already exists. I was under the impression that EOF should handle this, but it doesn't seem to.
>>
>> 2. We tried to send out some test notifications yesterday, which exposed some inefficiencies in my model, which seem to have been resolved, but there are still significant issues. Apache and MySQL are fine, neither is pressed, but the CPU approaches 100% usage in spikes on the server (a CentOS VM with 16 GB RAM running Java 1.6 64 bit). Nothing else is running on it. The individual queries in the registration process do not return more than 5 rows, though there are 18 separate SQL calls caused by the registration method, all but one returns 1 row, and the other returns 5. In any event, MySQL has no slow queries.
>>
>> So it's the WO Java processes that seem to be taking up 100% of the CPU. Constantly getting worker-thread broken pipe errors when it is pressed like that.
>
> For the record, yesterday we weren't even able to use jstack to see what was going on. But we did see working threads going up to 128. No stuck queries in MySQL.
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden