Hi Chris, I just sent you a private message with the appids.
I tryed to change my instances class to F2 and F4, and I didn't noticed any significant improvements. I didn't gave up yet. Thanks for your answer. Brandon, Thanks for the explanation, things are clearer now. Cheers On Mon, Mar 12, 2012 at 2:08 AM, Chris Ramsdale <[email protected]>wrote: > Hey Felippe, > > Have you considered bumping your instance class and enabling threadsafe? > We have seen a handful of customers that have had success doing just this. > > Also, did you hear back from the premier account folks? If not, send me > your app IDs > (offline if you'd like) and I'll get the ball rolling here. > > -- Chris > > Product Manager, Google App Engine > > On Thu, Mar 8, 2012 at 2:12 PM, Felippe Bueno <[email protected]>wrote: > >> Hi, >> >> I will try to be objective: >> >> The problems that I found: >> >> 1 - Seems that datetime.datetime.strptime is not threadsafe ( >> https://groups.google.com/group/google-appengine-python/browse_thread/thread/efbcffa181c32f33/48afebe467861674?pli=1 >> ) >> I needed to put a call to it on appengine_config.py following >> http://bugs.python.org/issue7980 >> >> 2 - webapp2 follow PEP333, it seems that's why you need to specify >> str().encode('ascii') when sending response headers. >> I mean, if you do not specify it, str() will be the default coding (utf8 >> in my case). >> >> 3 - I'm not sure if before python2.7/webapp2, it was ok send ',' on >> cookie header. But, it was working on python2.5 and webapp. >> With python2.7 and webapp2 it stoped working. I replace it with '_' on >> cookie header. >> >> Now, the real problems: >> >> On python 2.5: >> most requests to my app uses only memcache.incr()/get()/set(). Some times >> the only thing that I need to do is an incr(). >> I'm using a global dict to cache things, and it was working pretty well. >> My instances latency is something *from 120ms to 200ms.* >> incr() is running* ~5ms,* same to get/set. Not more than *20ms* >> My app is CPU intensive, and is consuming* ~180 CPU seconds/sec running >> at 1300 req/sec* >> >> When I turn on appstats I'm able to see that my code (between the rpc >> calls) runs *from 80ms to 120ms, some times <20ms.* >> >> >> After changing to python 2.7 I noticed that inc()/get()/set() (memcache) >> takes *100ms+* to run. >> My code takes *1000ms+ to run.* >> Cpu seconds is* 350 CPU seconds/sec running at 1300 req/sec.* >> Instances latency increased to ~500ms >> >> In my opinion >> http://code.google.com/p/googleappengine/issues/detail?id=6323 should be >> reopened. >> It's true that the latency is much better before issue 6323 be closed, >> but still not acceptable. >> >> Also, it's true that when using python 2.7 threadsafe=yes, the >> scheduler starts half of instances when running on python 2.5. >> But again, the latency is too high. >> >> >> By the way, I still not comfortable with the instance scheduler. >> >> >> Another thing that I noticed, is that when I change from python2.7 to >> python2.5 (appengine admin/versions), I get strange memcache errors: >> >> class Reference has no attribute '__new__' >> Traceback (most recent call last): >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", >> line 701, in __call__ >> handler.get(*groups) >> File "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxxviews.py", line 29, >> in get >> self._get() >> File "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxx/views.py", line >> 83, in _get >> output = rules.Process(nid, h, data, r, self.request) >> File "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxx/rules.py", line >> 73, in Process >> match, location_info = geoip.GeoIP_Org.match(params, rule, geoip_ck) >> File >> "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxx/matchers/geoip.py", line >> 101, in match >> return klass.compute_match(params, rule, cookie, >> storageclass=models.GeoIPOrg) >> File >> "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxx/matchers/geoip.py", line >> 38, in compute_match >> geoip_row = klass.fetch_row(storageclass, params) >> File >> "/base/data/home/apps/xxxxxxx/xxxxxxxxx/xxxxxxx/matchers/geoip.py", line >> 68, in fetch_row >> cached_row = memcache.get(klass._row_key(addr)) >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/api/memcache/__init__.py", >> line 563, in get >> results = rpc.get_result() >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", >> line 592, in get_result >> return self.__get_result_hook(self) >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/api/memcache/__init__.py", >> line 628, in __get_hook >> self._do_unpickle) >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/api/memcache/__init__.py", >> line 271, in _decode_value >> return do_unpickle(value) >> File >> "/base/python_runtime/python_lib/versions/1/google/appengine/api/memcache/__init__.py", >> line 404, in _do_unpickle >> return unpickler.load() >> File "/base/python_runtime/python_dist/lib/python2.5/pickle.py", line >> 852, in load >> dispatch[key](self) >> File "/base/python_runtime/python_dist/lib/python2.5/pickle.py", line >> 1077, in load_newobj >> obj = cls.__new__(cls, *args) >> AttributeError: class Reference has no attribute '__new__' >> >> >> I'm also trying to contact premier account sales team, but without >> success. >> It is very frustrating when you don't have to who ask for help. >> I know that there are a lot of good souls here :-) but most of time >> people are busy trying to solve their own problems. >> >> >> Making long story short, >> I need to choose between, save money (half of instances) or run fast. >> That should make sense, but in my opinion, >> python 2.7 should comes to save us money, running at same speed of python >> 2.5. >> Am I wrong ? >> >> Thank you for "listening me" :-) >> Cheers >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-appengine?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
