Your SlideShare is downloading. ×
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
memcached proxy server development and operation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

memcached proxy server development and operation

3,367

Published on

memcached proxy server development and operaiton

memcached proxy server development and operaiton

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,367
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
17
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. memcached proxy server development and operation Tatsuhiko Kubo bokko@pixiv.com 13年9月20日金曜日
  • 2. About me ✦ Tatsuhiko Kubo(bokko@pixiv.com) ✦ @cubicdaiya(twitter, github) ✦ Senior Software Engineer@pixiv Inc. 13年9月20日金曜日
  • 3. Recent Work ✦ mruby_nginx_module ✦ Embedded mruby into Nginx ✦ ngx_small_light ✦ Dynamic Image Transformation for Nginx ✦ Contributions/pull requests to many other projects on github 13年9月20日金曜日
  • 4. Recent Work WEB+DB PRESS Vol.72 □detailed nginx flexible configuration and brilliant scalability □collaborators @harukasan @semind 13年9月20日金曜日
  • 5. memcached proxy server development and operation 13年9月20日金曜日
  • 6. memcached proxy server development and operation ∼at pixiv∼ 13年9月20日金曜日
  • 7. Before that, 13年9月20日金曜日
  • 8. Background 13年9月20日金曜日
  • 9. or 13年9月20日金曜日
  • 10. About datastore & caching strategy at pixiv 13年9月20日金曜日
  • 11. Previously(2 years ago...) ・・・ ・・・ 13年9月20日金曜日
  • 12. Previously(2 years ago...) There was a memcached on each application server. ・・・ ・・・ 13年9月20日金曜日
  • 13. Previously(2 years ago...) ・・・ ・・・ 13年9月20日金曜日
  • 14. Previously(2 years ago...) AP connected through UNIX domain socket. ・・・ ・・・ 13年9月20日金曜日
  • 15. Previously(2 years ago...) Connects through TCP socket, too. (For data synchronization) 13年9月20日金曜日
  • 16. rough-and-ready patch for this 13年9月20日金曜日
  • 17. Problems ✦ data synchronization is straining ✦ TCP connection overhead ✦ processing time is directly proprtional the number of APs ✦ data restoration is painful ✦ memcached is not persistent ✦ e.g, when AP server goes down. 13年9月20日金曜日
  • 18. Migration to KyotoTycoon ✦ KyotoTycoon supports ✦ data persistency. ✦ data expiration ✦ memcached ASCII protocol. ✦ We could migrate without modifying application! 13年9月20日金曜日
  • 19. After migration 13年9月20日金曜日
  • 20. KyotoTycoon overwhelmed! 13年9月20日金曜日
  • 21. KyotoTycoon overwhelmed ✦ KyotoTycoon(using memcached protocol plugin) compared with memcached, ✦ Lower performance 13年9月20日金曜日
  • 22. KyotoTycoon overwhelmed ✦ KyotoTycoon(using memcached protocol plugin) compared with memcached, ✦ Lower performance Even so, persistency is some good! 13年9月20日金曜日
  • 23. KyotoTycoon overwhelmed ✦ KyotoTycoon(using memcached protocol plugin) compared with memcached, ✦ Lower performance Even so, persistency is some good! We wanted it at that time! 13年9月20日金曜日
  • 24. Other Problems ✦ We needed ✦ seamless fail-over mechanism ✦ convenient monitoring mechanism ✦ slow query log(like MySQL) ✦ statistics for whole queries 13年9月20日金曜日
  • 25. dealing with these problems ✦ Scale out(For example, add servers) ✦ This was difficult for us at least at that time... ✦ Scale up(For example, buy expensive servers) ✦ This was more difficult for us. ✦ Use proxy server! ✦ Actually, I developed one in C. ✦ Twemproxy was not released yet. 13年9月20日金曜日
  • 26. ✦ Scale out(For example, add servers) ✦ This was difficult for us at least at that time... ✦ Scale up(For example, buy expensive servers) ✦ This was more difficult for us. ✦ Use proxy server! ✦ Actually, I developed one in C. ✦ Twemproxy was not released yet. dealing with these problems 13年9月20日金曜日
  • 27. Currently 13年9月20日金曜日
  • 28. Currently ✦ Applications connect to neoagent by UNIX domain socket ✦ reduced consumption of local-ports ✦ neoagent keeps persistent TCP connections to KyotoTycoon ✦ bypass overhead of TCP connection 13年9月20日金曜日
  • 29. neoagent ∼A Yet Another Memcached Protocol Proxy Server∼ 13年9月20日金曜日
  • 30. neoagent ✦ event-driven & multi-threaded server ✦ proxies a subset of memcached protocol ✦ get, set, add, delete, incr, decr, quit ✦ supports following features ✦ connection-pooling ✦ graceful-restart & online-update ✦ convenient monitoring ✦ etc... 13年9月20日金曜日
  • 31. neoagent architecture ✦ core ✦ written in C (C99 style) ✦ tools(CLI) ✦ written in Python ✦ dependencies ✦ libev, json-c, pthread(core) ✦ SCons, Sphinx(tools) 13年9月20日金曜日
  • 32. neoagent architecture ✦ Single-master and multiple workers ✦ Configuration by JSON ✦ Multi-threaded ✦ Event-driven 13年9月20日金曜日
  • 33. Single Master and multiple workers 13年9月20日金曜日
  • 34. neoagent process 1 neogent process 2 neoagent process 3 KyotoTycoon KyotoTycoon KyotoTycoon proxies proxies proxies Apache (mod_php) send request Previously 13年9月20日金曜日
  • 35. Previously ✦ each neoagent-process was independent ✦ neoagent-process was daemonized by daemontools 13年9月20日金曜日
  • 36. neoagent process 1 KyotoTycoon proxies neoagent processes spawn gradually 13年9月20日金曜日
  • 37. neoagent process 1 KyotoTycoon proxies neoagent process 2 KyotoTycoon proxies neoagent processes spawn gradually 13年9月20日金曜日
  • 38. neoagent process 1 KyotoTycoon proxies neoagent process 2 KyotoTycoon proxies neoagent process 3 KyotoTycoon proxies neoagent processes spawn gradually 13年9月20日金曜日
  • 39. neoagent process 1 KyotoTycoon proxies neoagent process 2 KyotoTycoon proxies neoagent process 3 KyotoTycoon proxies ・ ・ ・ neoagent processes spawn gradually 13年9月20日金曜日
  • 40. neoagent process 1 KyotoTycoon proxies neoagent process 2 KyotoTycoon proxies neoagent process 3 KyotoTycoon proxies neoagent process n KyotoTycoon proxies ・ ・ ・ neoagent processes spawn gradually 13年9月20日金曜日
  • 41. Previously 13年9月20日金曜日
  • 42. (ノ`Д´)ノ┻┻ 13年9月20日金曜日
  • 43. neoagent worker process 1 neogent worker process 2 neoagent worker process 3 KyotoTycoon KyotoTycoon KyotoTycoon proxies proxies proxies Currently neoagent master process fork 13年9月20日金曜日
  • 44. neoagent worker process 1 neogent worker process 2 neoagent worker process 3 KyotoTycoon KyotoTycoon KyotoTycoon proxies proxies proxies Apache (mod_php) send request Currently neoagent master process 13年9月20日金曜日
  • 45. single-master and multiple workers ✦ Master is responsible for ✦ controlling worker processes ✦ Workers are responsible for ✦ processing user’s requests ✦ Supervisor may control only Master ✦ Now we use Monit instead of daemontools 13年9月20日金曜日
  • 46. Configuration by JSON 13年9月20日金曜日
  • 47. Configuration by JSON { "ctl" : { "sockpath" : "/var/run/neoagent_ctl.sock", "logpath" : "/var/run/neoagent_ctl.log", }, "environments" : [ { "name" : "env1", "sockpath" : "/var/run/neoagent.sock", "target_server" : "127.0.0.1:11212", "backup_server" : "127.0.0.1:11213", (abbreviated) }, { "name" : "env2", "sockpath" : "/var/run/neoagent2.sock", "target_server" : "127.0.0.1:11214", "backup_server" : "127.0.0.1:11215", (abbreviated) }, ] } 13年9月20日金曜日
  • 48. Configuration by JSON { "ctl" : { "sockpath" : "/var/run/neoagent_ctl.sock", "logpath" : "/var/run/neoagent_ctl.log", }, "environments" : [ { "name" : "env1", "sockpath" : "/var/run/neoagent.sock", "target_server" : "127.0.0.1:11212", "backup_server" : "127.0.0.1:11213", (abbreviated) }, { "name" : "env2", "sockpath" : "/var/run/neoagent2.sock", "target_server" : "127.0.0.1:11214", "backup_server" : "127.0.0.1:11215", (abbreviated) }, ] } 13年9月20日金曜日
  • 49. “ctl” block sockpath socket path for controlling neoagent logpath log path for master process "ctl" : { "sockpath" : "/var/run/neoagent_ctl.sock", "logpath" : "/var/run/neoagent_ctl.log", }, This block is for master 13年9月20日金曜日
  • 50. Configuration by JSON { "ctl" : { "sockpath" : "/var/run/neoagent_ctl.sock", "logpath" : "/var/run/neoagent_ctl.log", }, "environments" : [ { "name" : "env1", "sockpath" : "/var/run/neoagent.sock", "target_server" : "127.0.0.1:11212", "backup_server" : "127.0.0.1:11213", (abbreviated) }, { "name" : "env2", "sockpath" : "/var/run/neoagent2.sock", "target_server" : "127.0.0.1:11214", "backup_server" : "127.0.0.1:11215", (abbreviated) }, ] } 13年9月20日金曜日
  • 51. Configuration by JSON { "ctl" : { "sockpath" : "/var/run/neoagent_ctl.sock", "logpath" : "/var/run/neoagent_ctl.log", }, "environments" : [ { "name" : "env1", "sockpath" : "/var/run/neoagent.sock", "target_server" : "127.0.0.1:11212", "backup_server" : "127.0.0.1:11213", (abbreviated) }, { "name" : "env2", "sockpath" : "/var/run/neoagent2.sock", "target_server" : "127.0.0.1:11214", "backup_server" : "127.0.0.1:11215", (abbreviated) }, ] } 13年9月20日金曜日
  • 52. “environments” block ✦ In neoagent, ✦ environment is the configuration for workers. ✦ Each entry in “environments” is the configuration for each worker. ✦ Master manages workers for each of their of environments. 13年9月20日金曜日
  • 53. “environments” block name environment name sockpath socket path for communicating neoagent’s worker target_server primary memcached server backup_server secondary memcached server conn_max max connections(backlog size) connpool_max connection pool size etc... document is here http://cubicdaiya.github.io/neoagent/ 13年9月20日金曜日
  • 54. Muti-threaded 13年9月20日金曜日
  • 55. neoagent’s threads ✦ Master-process ✦ sigwait-thread ✦ ctl-thread ✦ Worker-process ✦ sigwait-thread ✦ event-threads ✦ support-thread 13年9月20日金曜日
  • 56. Master’s threads ✦ sigwait-thread ✦ waiting for a signal from ctl- thread ✦ ctl-thread ✦ receiving a instruction from neoctl through ctl-socket 13年9月20日金曜日
  • 57. Worker’s threads ✦ sigwait-thread ✦ waiting for a signal from ctl- thread ✦ event-threads ✦ processing client requests ✦ support-thread ✦ health-checking & statictics 13年9月20日金曜日
  • 58. Event-driven 13年9月20日金曜日
  • 59. Event-threads’ architecture ✦ event-driven ✦ non-blocking I/O ✦ multi-threaded ✦ request-queuing & thread-pooling 13年9月20日金曜日
  • 60. Event processing phases 13年9月20日金曜日
  • 61. multithreaded with request-queuing & thread-pooling event-thread event-thread event-thread request1 request2 request3 empty ・ ・ ・ empty dequeue dequeue dequeue event-thread(accept) request-queue enqueue processing requests 13年9月20日金曜日
  • 62. Usage at pixiv 13年9月20日金曜日
  • 63. Usage ✦ Building neoagent ✦ Monitoring neoagent ✦ Controlling neoagent 13年9月20日金曜日
  • 64. Building 13年9月20日金曜日
  • 65. Building neoagent 13年9月20日金曜日
  • 66. Building neoagent with SCons! 13年9月20日金曜日
  • 67. SCons ✦ Simple & flexible & programable build tool ✦ Auto anaylysis of dependencies ✦ Build-configuration is written with Python ✦ Suitable for small or medium scale projects 13年9月20日金曜日
  • 68. Monitoring 13年9月20日金曜日
  • 69. Monitoring ✦ health-checking worker with Nagios & NRPE ✦ monitoring neostat & Munin 13年9月20日金曜日
  • 70. neostat $ neostat -s /var/run/neoagent_st.sock -o { "datetime" : 2013-09-08 23:12:39 "version": "0.8.7", "host": "localhost", "port": "/var/run/neoagent_st.sock", "environment_name": "yapcasia2013", (abbreviated) "current_conn": 5, "available_conn": 20 (abbreviated) } 13年9月20日金曜日
  • 71. neostat -> Munin Graph -> current connections $ neostat -s /var/run/neoagent_st.sock -o { "datetime" : 2013-09-08 23:12:39 "version": "0.8.7", "host": "localhost", "port": "/var/run/neoagent_st.sock", "environment_name": "yapcasia2013", (abbreviated) "current_conn": 5, "available_conn": 20 (abbreviated) } 13年9月20日金曜日
  • 72. neostat -> Munin Graph -> neostat outputs current status of neoagent. (For example, current connection numbers) current connections $ neostat -s /var/run/neoagent_st.sock -o { "datetime" : 2013-09-08 23:12:39 "version": "0.8.7", "host": "localhost", "port": "/var/run/neoagent_st.sock", "environment_name": "yapcasia2013", (abbreviated) "current_conn": 5, "available_conn": 20 (abbreviated) } 13年9月20日金曜日
  • 73. neostat internal ✦ neoagent workers have a suppport-thread. ✦ support-thread returns JSON as against request of neostat. 13年9月20日金曜日
  • 74. slowlog for neoagent ■ configuration ■ output "slow_query_sec" : 0.01, # milli-seconds "slow_query_log_path" : "/var/log/neoagent_slowlog.log", "slow_query_log_format" : "json", "slow_query_log_access_mask" : "0666", { ..., "na_to_ts": 0.000006, "na_from_ts": 0.000003, "na_to_client": 0.014320, "querytxt": "get key1" } { ..., "na_to_ts": 0.000012, "na_from_ts": 0.000004, "na_to_client": 0.011587, "querytxt": "get key2" } { ..., "na_to_ts": 0.000009, "na_from_ts": 0.000003, "na_to_client": 0.017788, "querytxt": "get key3" } { ..., "na_to_ts": 0.000009, "na_from_ts": 0.000009, "na_to_client": 0.036082, "querytxt": "get key4" } { ..., "na_to_ts": 0.000008, "na_from_ts": 0.000008, "na_to_client": 0.010506, "querytxt": "get key5" } { ..., "na_to_ts": 0.000014, "na_from_ts": 0.000003, "na_to_client": 0.029464, "querytxt": "get key6" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.000004, "na_to_client": 0.012440, "querytxt": "get key7" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.000003, "na_to_client": 0.043834, "querytxt": "get key8" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.050442, "na_to_client": 0.000015, "querytxt": "get key9" } 13年9月20日金曜日
  • 75. slowlog for neoagent na_to_ts taken time for sending request to target server na_from_ts taken time for receiving response from target server na_to_client taken time for sending response to client querytxt request body { ..., "na_to_ts": 0.000006, "na_from_ts": 0.000003, "na_to_client": 0.014320, "querytxt": "get key1" } { ..., "na_to_ts": 0.000012, "na_from_ts": 0.000004, "na_to_client": 0.011587, "querytxt": "get key2" } { ..., "na_to_ts": 0.000009, "na_from_ts": 0.000003, "na_to_client": 0.017788, "querytxt": "get key3" } { ..., "na_to_ts": 0.000009, "na_from_ts": 0.000009, "na_to_client": 0.036082, "querytxt": "get key4" } { ..., "na_to_ts": 0.000008, "na_from_ts": 0.000008, "na_to_client": 0.010506, "querytxt": "get key5" } { ..., "na_to_ts": 0.000014, "na_from_ts": 0.000003, "na_to_client": 0.029464, "querytxt": "get key6" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.000004, "na_to_client": 0.012440, "querytxt": "get key7" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.000003, "na_to_client": 0.043834, "querytxt": "get key8" } { ..., "na_to_ts": 0.000007, "na_from_ts": 0.050442, "na_to_client": 0.000015, "querytxt": "get key9" } 13年9月20日金曜日
  • 76. slowlog for neoagent 13年9月20日金曜日
  • 77. slowlog for neoagent slowlog is sent to MongoDB by Fluentd! 13年9月20日金曜日
  • 78. slowlog for neoagent 13年9月20日金曜日
  • 79. slowlog for neoagent Monitoring slow queries with Monitoring Web Application! 13年9月20日金曜日
  • 80. Controlling neoagent 13年9月20日金曜日
  • 81. Controlling with signals 13年9月20日金曜日
  • 82. Problem with signals ✦ complicated & easy to mistake ✦ must send multiple signals to master and workers at a time ✦ must link worker’s PID to neoagent’s environment 13年9月20日金曜日
  • 83. Controlling with neoctl 13年9月20日金曜日
  • 84. neoctl internal ✦ neoctl sends instructions to master ✦ by UNIX domain socket ✦ master manages worker’ PIDs ✦ and the link between each worker’s PID and environment name, too. ✦ master sends signals master-self and workers. 13年9月20日金曜日
  • 85. Graceful restart neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 13年9月20日金曜日
  • 86. Graceful restart neoctl neoagent master process graceful env1 neoagent worker env1 neoagent worker env2 neoagent worker env3 through neoagent_ctl.sock 13年9月20日金曜日
  • 87. Graceful restart neoctl neoagent master process graceful env1 neoagent worker env1 neoagent worker env2 neoagent worker env3 through neoagent_ctl.sock SIGUSR2 13年9月20日金曜日
  • 88. Graceful restart neoctl neoagent master process graceful env1 neoagent worker env1 neoagent worker env2 neoagent worker env3 through neoagent_ctl.sock SIGUSR2 worker(env1) exits after processing remaining requests 13年9月20日金曜日
  • 89. Graceful restart neoctl neoagent master process graceful env1 neoagent worker env1 neoagent worker env2 neoagent worker env3 through neoagent_ctl.sock SIGUSR2 SIGCONT 13年9月20日金曜日
  • 90. Graceful restart neoctl neoagent master process graceful env1 neoagent worker env1 neoagent worker env2 neoagent worker env3 through neoagent_ctl.sock SIGUSR2 SIGCONT neoagent worker env1(new) fork 13年9月20日金曜日
  • 91. Graceful restart neoctl neoagent master process neoagent worker env2 neoagent worker env3 neoagent worker env1(new) 13年9月20日金曜日
  • 92. Graceful restart neoctl neoagent master process neoagent worker env2 neoagent worker env3 neoagent worker env1(new) 13年9月20日金曜日
  • 93. Online version update neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 13年9月20日金曜日
  • 94. Online version update neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 update through neoagent_ctl.sock 13年9月20日金曜日
  • 95. Online version update neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 update through neoagent_ctl.sock SIGUSR2 13年9月20日金曜日
  • 96. Online version update neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 update through neoagent_ctl.sock SIGUSR2 workers exits after processing remaining requests 13年9月20日金曜日
  • 97. Online version update neoctl neoagent master process neoagent worker env1 neoagent worker env2 neoagent worker env3 update through neoagent_ctl.sock SIGUSR2 SIGUSR1 13年9月20日金曜日
  • 98. Online version update neoctl neoagent master process(old) neoagent worker env1(old) neoagent worker env2(old) neoagent worker env3(old) update through neoagent_ctl.sock SIGUSR2 SIGUSR1 neoagent worker env1(new) neoagent worker env2(new) neoagent worker env3(new) neoagent master process(new) exec fork 13年9月20日金曜日
  • 99. Online version update neoctl neoagent worker env1(old) neoagent worker env2(old) neoagent worker env3(old) neoagent worker env1(new) neoagent worker env2(new) neoagent worker env3(new) neoagent master process(new) 13年9月20日金曜日
  • 100. Online version update neoctl neoagent worker env1(new) neoagent worker env2(new) neoagent worker env3(new) neoagent master process(new) 13年9月20日金曜日
  • 101. neoctl neoagent master process(new) neoagent worker env2(new) neoagent worker env3(new) neoagent worker env1(new) Online version update 13年9月20日金曜日
  • 102. Controlling neoagent 13年9月20日金曜日
  • 103. Controlling neoagent with Capistrano! 13年9月20日金曜日
  • 104. Summary ✦ Why memcached protocol proxy server is required? ✦ reduced TCP connections ✦ enhance scalability of system ✦ Monitoring is important! ✦ Don’t guess! Measure! ✦ Create tools for simplifying operation! 13年9月20日金曜日
  • 105. Thanks! 13年9月20日金曜日

×