J'essaie de configurer un site Web de test mono asp.net 4.0 qui utilise des fournisseurs memcached (http: //memcachedproviders.codeplex. com /) en utilisant Enyim.Memcached pour accéder à memcached. Le site Web et memcachedproviders fonctionnent correctement sur un serveur Windows.Dans Mono, les fournisseurs memcached se bloque après quelques heures avec "le socket n'est pas connecté" Erreur 500
J'ai migré sur le site Web de travail asp.net vers mono (Ubuntu 10.10, Mono 2.8), et il fonctionne correctement et tire des sessions d'un serveur externe exécutant memcached, mais inexplicablement, tous les quelques heures, le site tombe en panne, et renvoie juste une erreur 500 disant "Le socket n'est pas connecté" Cela se produit uniquement lorsque l'état de la session memcachedproviders est activé.
Quelqu'un at-il l'expérience de la configuration de memcachedproveders pour une session en mono, ou savoir au moins où je devrais commencer à chercher? Bien que je connaisse Linux et Apache, je suis généralement plus à l'aise avec Windows, donc il peut y avoir une configuration qui me manque.
Pour autant que je peux dire, c'est le journal de apache à partir du moment de l'erreur, même avec le débogage activé à partir mod_mono:
[Tue Nov 09 17:53:17 2010] [notice] caught SIGTERM, shutting down
[Tue Nov 09 17:53:19 2010] [notice] Apache/2.2.14 (Ubuntu) mod_mono/2.8 configured -- resuming normal operations
Listening on: /tmp/mod_mono_server_global
Root directory:/
Listening on: /tmp/mod_mono_server_global
Root directory:/
Error: There's already a server listening on /tmp/mod_mono_server_global
mod-mono-server4
mod-mono-server4
Listening on: /tmp/mod_mono_server_mysite
Root directory: /srv/www/mysite
[Tue Nov 09 17:53:58 2010] [error] (104)Connection reset by peer: read_data failed
[Tue Nov 09 17:53:58 2010] [error] Command stream corrupted, last command was -1
La configuration memcached générale web.config est quelque chose comme:
<enyim.com>
<memcached>
<servers>
<add address="##.##.##.##" port="11211"/>
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>
</memcached>
</enyim.com>
...
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="MemcachedSessionProvider">
<providers>
<add name="MemcachedSessionProvider" type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders" dbType="none" writeExceptionsToEventLog="true"/>
</providers>
</sessionState>
Et la trace de la pile:
System.Net.Sockets.SocketException: The socket is not connected
at System.Net.Sockets.Socket.Shutdown (SocketShutdown how) [0x00058] in /home/monoweb/mono-2.8/mcs/class/System/System.Net.Sockets/Socket_2_1.cs:698
at Enyim.Caching.Memcached.PooledSocket.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.PooledSocket.Destroy() [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.MemcachedNode+InternalPoolImpl.ReleaseSocket (Enyim.Caching.Memcached.PooledSocket socket) [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.PooledSocket.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.PooledSocket.System.IDisposable.Dispose() [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.ItemOperation.Dispose() [0x00000] in <filename unknown>:0
at Enyim.Caching.Memcached.Operation.System.IDisposable.Dispose() [0x00000] in <filename unknown>:0
at Enyim.Caching.MemcachedClient.Store (Enyim.Caching.Memcached.ServerPool pool, StoreCommand mode, System.String key, System.Object value, UInt64 casValue, TimeSpan validFor, DateTime expiresAt) [0x00000] in <filename unknown>:0
at Enyim.Caching.MemcachedClient.Store (StoreMode mode, System.String key, System.Object value, TimeSpan validFor) [0x00000] in <filename unknown>:0
at MemcachedProviders.Session.SessionStateProvider.SetAndReleaseItemExclusive (System.Web.HttpContext context, System.String id, System.Web.SessionState.SessionStateStoreData item, System.Object lockId, Boolean newItem) [0x00000] in <filename unknown>:0
at System.Web.SessionState.SessionStateModule.OnReleaseRequestState (System.Object o, System.EventArgs args) [0x0003f] in /home/monoweb/mono-2.8/mcs/class/System.Web/System.Web.SessionState_2.0/SessionStateModule.cs:292
at System.Web.HttpApplication+<RunHooks>c__Iterator1.MoveNext() [0x001aa] in /home/monoweb/mono-2.8/mcs/class/System.Web/System.Web/HttpApplication.cs:1026
at System.Web.HttpApplication+<Pipeline>c__Iterator2.MoveNext() [0x00ec9] in /home/monoweb/mono-2.8/mcs/class/System.Web/System.Web/HttpApplication.cs:1385
at System.Web.HttpApplication.Tick() [0x00000] in /home/monoweb/mono-2.8/mcs/class/System.Web/System.Web/HttpApplication.cs:914