|
|
window.__APOLLO_STATE__ = {"ROOT_QUERY":{"viewer":null,"variantFlags":[{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.0","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.1","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.2","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.3","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.4","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.5","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.6","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.7","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.8","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.9","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.10","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.11","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.12","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.13","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.14","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.15","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.16","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.17","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.18","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.19","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.20","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.21","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.22","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.23","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.24","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.25","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.26","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.27","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.28","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.29","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.30","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.31","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.32","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.33","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.34","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.35","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.36","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.37","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.38","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.39","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.40","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.41","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.42","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.43","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.44","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.45","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.46","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.47","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.48","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.49","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.50","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.51","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.52","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.53","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.54","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.55","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.56","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.57","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.58","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.59","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.60","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.61","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.62","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.63","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.64","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.65","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.66","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.67","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.68","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.69","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.70","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.71","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.72","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.73","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.74","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.75","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.76","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.77","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.78","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.79","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.80","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.81","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.82","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.83","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.84","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.85","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.86","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.87","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.88","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.89","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.90","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.91","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.92","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.93","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.94","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.95","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.96","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.97","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.98","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.99","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.100","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.101","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.102","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.103","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.104","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.105","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.106","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.107","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.108","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.109","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.110","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.111","typename":"VariantFlag"},{"type":"id","generated":true,"id":"ROOT_QUERY.variantFlags.112","typename":"VariantFlag"}],"meterPost({\"postId\":\"d6e62af173e2\",\"postMeteringOptions\":{}})":{"type":"id","generated":false,"id":"MeteringInfo:singleton","typename":"MeteringInfo"},"postResult({\"id\":\"d6e62af173e2\"})":{"type":"id","generated":false,"id":"Post:d6e62af173e2","typename":"Post"}},"ROOT_QUERY.variantFlags.0":{"name":"add_friction_to_signup","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.0.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.0.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.1":{"name":"allow_access","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.1.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.1.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.2":{"name":"allow_signup","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.2.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.2.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.3":{"name":"allow_test_auth","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.3.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.3.valueType":{"__typename":"VariantFlagString","value":"disallow"},"ROOT_QUERY.variantFlags.4":{"name":"assign_default_topic_to_posts","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.4.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.4.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.5":{"name":"available_annual_plan","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.5.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.5.valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"},"ROOT_QUERY.variantFlags.6":{"name":"available_monthly_plan","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.6.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.6.valueType":{"__typename":"VariantFlagString","value":"60e220181034"},"ROOT_QUERY.variantFlags.7":{"name":"branch_seo_metadata","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.7.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.7.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.8":{"name":"browsable_stream_config_bucket","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.8.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.8.valueType":{"__typename":"VariantFlagString","value":"curated-topics"},"ROOT_QUERY.variantFlags.9":{"name":"covid_19_cdc_banner","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.9.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.9.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.10":{"name":"disable_android_subscription_activity_carousel","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.10.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.10.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.11":{"name":"disable_gosocial_followers_that_you_follow","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.11.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.11.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.12":{"name":"disable_ios_resume_reading_toast","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.12.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.12.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.13":{"name":"disable_ios_subscription_activity_carousel","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.13.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.13.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.14":{"name":"disable_mobile_featured_chunk","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.14.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.14.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.15":{"name":"disable_post_recommended_from_friends_provider","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.15.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.15.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.16":{"name":"enable_android_local_currency","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.16.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.16.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.17":{"name":"enable_annual_renewal_reminder_email","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.17.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.17.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.18":{"name":"enable_app_flirty_thirty","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.18.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.18.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.19":{"name":"enable_auto_tier","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.19.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.19.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.20":{"name":"enable_automated_mission_control_triggers","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.20.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.20.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.21":{"name":"enable_blue_small_meter","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.21.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.21.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.22":{"name":"enable_branch_io","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.22.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.22.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.23":{"name":"enable_branding","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.23.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.23.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.24":{"name":"enable_branding_fonts","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.24.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.24.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.25":{"name":"enable_curation_priority_queue_experiment","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.25.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.25.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.26":{"name":"enable_dedicated_series_tab_api_ios","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.26.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.26.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.27":{"name":"enable_different_grid","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.27.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.27.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.28":{"name":"enable_digest_feature_logging","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.28.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.28.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.29":{"name":"enable_disregard_trunc_state_for_footer","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.29.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.29.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.30":{"name":"enable_edit_alt_text","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.30.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.30.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.31":{"name":"enable_email_sign_in_captcha","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.31.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.31.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.32":{"name":"enable_embedding_based_diversification","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.32.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.32.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.33":{"name":"enable_ev_mission_email_v3","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.33.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.33.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.34":{"name":"enable_expanded_feature_chunk_pool","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.34.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.34.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.35":{"name":"enable_filter_by_resend_rules","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.35.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.35.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.36":{"name":"enable_filter_expire_processor","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.36.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.36.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.37":{"name":"enable_first_name_on_paywall","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.37.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.37.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.38":{"name":"enable_free_corona_topic","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.38.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.38.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.39":{"name":"enable_google_one_tap","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.39.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.39.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.40":{"name":"enable_ios_post_stats","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.40.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.40.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.41":{"name":"enable_janky_spam_rules","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.41.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.41.valueType":{"__typename":"VariantFlagString","value":"users,posts"},"ROOT_QUERY.variantFlags.42":{"name":"enable_json_logs_trained_ranker","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.42.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.42.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.43":{"name":"enable_kafka_events","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.43.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.43.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.44":{"name":"enable_kbfd_rex","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.44.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.44.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.45":{"name":"enable_kbfd_rex_app_highlights","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.45.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.45.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.46":{"name":"enable_kbfd_rex_daily_digest","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.46.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.46.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.47":{"name":"enable_li_open_in_app","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.47.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.47.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.48":{"name":"enable_lite_notifications","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.48.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.48.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.49":{"name":"enable_lite_post","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.49.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.49.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.50":{"name":"enable_lite_post_cd","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.50.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.50.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.51":{"name":"enable_lite_post_highlights","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.51.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.51.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.52":{"name":"enable_lite_post_highlights_view_only","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.52.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.52.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.53":{"name":"enable_lite_profile","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.53.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.53.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.54":{"name":"enable_lite_pub_header_menu","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.54.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.54.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.55":{"name":"enable_lite_server_upstream_deadlines","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.55.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.55.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.56":{"name":"enable_lite_stories","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.56.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.56.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.57":{"name":"enable_lite_topics","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.57.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.57.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.58":{"name":"enable_lite_unread_notification_count_mutation","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.58.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.58.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.59":{"name":"enable_lo_homepage","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.59.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.59.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.60":{"name":"enable_lo_meter_swap","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.60.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.60.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.61":{"name":"enable_lo_open_in_app","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.61.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.61.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.62":{"name":"enable_logged_out_homepage_signup","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.62.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.62.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.63":{"name":"enable_login_code_flow","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.63.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.63.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.64":{"name":"enable_marketing_emails","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.64.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.64.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.65":{"name":"enable_media_resource_try_catch","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.65.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.65.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.66":{"name":"enable_membership_remove_section_a","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.66.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.66.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.67":{"name":"enable_minimal_meter_v2","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.67.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.67.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.68":{"name":"enable_miro_on_kubernetes","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.68.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.68.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.69":{"name":"enable_mk_branch_cleanup","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.69.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.69.valueType":{"__typename":"VariantFlagString","value":"app-button"},"ROOT_QUERY.variantFlags.70":{"name":"enable_ml_rank_modules","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.70.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.70.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.71":{"name":"enable_monthly_membership_default","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.71.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.71.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.72":{"name":"enable_more_on_coronavirus","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.72.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.72.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.73":{"name":"enable_mute","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.73.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.73.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.74":{"name":"enable_new_collaborative_filtering_data","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.74.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.74.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.75":{"name":"enable_new_suspended_page","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.75.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.75.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.76":{"name":"enable_new_three_dot_menu","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.76.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.76.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.77":{"name":"enable_newsletter_v3_landing_for_covid_only","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.77.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.77.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.78":{"name":"enable_optimizely","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.78.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.78.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.79":{"name":"enable_pardon_the_interruption_removal","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.79.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.79.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.80":{"name":"enable_parsely","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.80.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.80.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.81":{"name":"enable_patronus_on_kubernetes","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.81.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.81.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.82":{"name":"enable_popularity_feature","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.82.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.82.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.83":{"name":"enable_post_import","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.83.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.83.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.84":{"name":"enable_post_page_nav_stickiness_removal","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.84.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.84.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.85":{"name":"enable_post_seo_settings_screen","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.85.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.85.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.86":{"name":"enable_post_settings_screen","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.86.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.86.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.87":{"name":"enable_primary_topic_for_mobile","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.87.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.87.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.88":{"name":"enable_rito_upstream_deadlines","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.88.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.88.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.89":{"name":"enable_rtr_channel","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.89.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.89.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.90":{"name":"enable_save_to_medium","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.90.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.90.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.91":{"name":"enable_starspace","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.91.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.91.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.92":{"name":"enable_suggest_account","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.92.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.92.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.93":{"name":"enable_suggest_account_li","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.93.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.93.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.94":{"name":"enable_tick_landing_page","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.94.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.94.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.95":{"name":"enable_tipalti_onboarding","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.95.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.95.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.96":{"name":"enable_topic_lifecycle_email","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.96.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.96.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.97":{"name":"enable_tribute_landing_page","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.97.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.97.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.98":{"name":"enable_trumpland_landing_page","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.98.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.98.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.99":{"name":"featured_fc_and_ydr","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.99.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.99.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.100":{"name":"filter_low_scoring_users","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.100.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.100.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.101":{"name":"glyph_font_set","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.101.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.101.valueType":{"__typename":"VariantFlagString","value":"m2"},"ROOT_QUERY.variantFlags.102":{"name":"google_sign_in_android","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.102.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.102.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.103":{"name":"is_not_medium_subscriber","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.103.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.103.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.104":{"name":"new_transition_page","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.104.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.104.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.105":{"name":"pardon_the_interruption_4","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.105.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.105.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.106":{"name":"pub_sidebar","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.106.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.106.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.107":{"name":"rank_model","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.107.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.107.valueType":{"__typename":"VariantFlagString","value":"default"},"ROOT_QUERY.variantFlags.108":{"name":"redis_read_write_splitting","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.108.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.108.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.109":{"name":"share_post_linkedin","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.109.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.109.valueType":{"__typename":"VariantFlagBoolean","value":true},"ROOT_QUERY.variantFlags.110":{"name":"signin_services","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.110.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.110.valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"},"ROOT_QUERY.variantFlags.111":{"name":"signup_services","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.111.valueType","typename":"VariantFlagString"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.111.valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"},"ROOT_QUERY.variantFlags.112":{"name":"use_new_admin_topic_backend","valueType":{"type":"id","generated":true,"id":"$ROOT_QUERY.variantFlags.112.valueType","typename":"VariantFlagBoolean"},"__typename":"VariantFlag"},"$ROOT_QUERY.variantFlags.112.valueType":{"__typename":"VariantFlagBoolean","value":true},"MeteringInfo:singleton":{"__typename":"MeteringInfo","postIds":{"type":"json","json":[]},"maxUnlockCount":3,"unlocksRemaining":3},"Post:d6e62af173e2":{"__typename":"Post","id":"d6e62af173e2","visibility":"PUBLIC","latestPublishedVersion":"f7ff17b467b5","collection":{"type":"id","generated":false,"id":"Collection:6965894c8b8f","typename":"Collection"},"creator":{"type":"id","generated":false,"id":"User:ead7e4ca29dd","typename":"User"},"isLocked":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","sequence":null,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fvoodoo-engineering\u002Fnode-js-and-cpu-profiling-on-production-in-real-time-without-downtime-d6e62af173e2","canonicalUrl":"","content({\"postMeteringOptions\":{}})":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}})","typename":"PostContent"},"firstPublishedAt":1571419414816,"isPublished":true,"layerCake":0,"primaryTopic":null,"title":"Node.js and CPU profiling on production (in real-time without downtime)","isLimitedState":false,"pendingCollection":null,"shareKey":null,"statusForCollection":"APPROVED","readingTime":7.216037735849056,"readingList":"READING_LIST_NONE","allowResponses":true,"clapCount":11,"viewerClapCount":0,"license":"ALL_RIGHTS_RESERVED","tags":[{"type":"id","generated":false,"id":"Tag:nodejs","typename":"Tag"},{"type":"id","generated":false,"id":"Tag:performance","typename":"Tag"},{"type":"id","generated":false,"id":"Tag:cpu","typename":"Tag"},{"type":"id","generated":false,"id":"Tag:profiling","typename":"Tag"},{"type":"id","generated":false,"id":"Tag:inspector","typename":"Tag"}],"topics":[],"recirc({\"paging\":{\"limit\":3}})":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}})","typename":"RecircItemConnection"},"voterCount":7,"recommenders":[],"postResponses":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.postResponses","typename":"PostResponses"},"responsesCount":0,"collaborators":[{"type":"id","generated":false,"id":"Collaborator:d6e62af173e2-aa221ef5cd0d","typename":"Collaborator"}],"translationSourcePost":null,"newsletterId":"","inResponseToPostResult":null,"inResponseToMediaResource":null,"curationEligibleAt":0,"isDistributionAlertDismissed":false,"audioVersionUrl":"","seoTitle":"","socialTitle":"","socialDek":"","metaDescription":"How to run a CPU profiling with Node.js on your production in real-time and without interruption of service.","latestPublishedAt":1571419414816,"previewContent":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.previewContent","typename":"PreviewContent"},"previewImage":{"type":"id","generated":false,"id":"ImageMetadata:1*EO-pr4RolgcAOj_Uk1rpDA.png","typename":"ImageMetadata"},"updatedAt":1571419415066,"seoDescription":"","isSuspended":false},"Collection:6965894c8b8f":{"id":"6965894c8b8f","domain":null,"slug":"voodoo-engineering","__typename":"Collection","isAuroraVisible":false,"googleAnalyticsId":null,"customStyleSheet":null,"colorBehavior":"ACCENT_COLOR","favicon":{"type":"id","generated":false,"id":"ImageMetadata:","typename":"ImageMetadata"},"name":"Voodoo Engineering","logo":{"type":"id","generated":false,"id":"ImageMetadata:1*_LkVyEmY2-W1rlZD2__W5g.jpeg","typename":"ImageMetadata"},"avatar":{"type":"id","generated":false,"id":"ImageMetadata:1*ID7_awC5r-U-zTXrW6w0zA.jpeg","typename":"ImageMetadata"},"isEnrolledInHightower":false,"creator":{"type":"id","generated":false,"id":"User:2c3576658a8b","typename":"User"},"viewerIsEditor":false,"navItems":[],"colorPalette":{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette","typename":"ColorPalette"},"viewerCanEditOwnPosts":false,"viewerCanEditPosts":false,"viewerIsMuting":false,"description":"Learn about Voodoo’s engineering efforts.","viewerIsFollowing":false,"viewerIsSubscribedToLetters":false,"isUserSubscribedToCollectionEmails":false,"ampEnabled":false,"twitterUsername":null,"facebookPageId":null,"tagline":"Learn about Voodoo’s engineering efforts."},"User:ead7e4ca29dd":{"id":"ead7e4ca29dd","__typename":"User","isSuspended":false,"allowNotes":true,"name":"Vincent Vallet","isFollowing":null,"username":"vincentvallet","bio":"","imageId":"1*vFTVh_mYyf0p6m7f77A3vw.jpeg","mediumMemberAt":0,"isBlocking":null,"isMuting":null,"isPartnerProgramEnrolled":false,"twitterScreenName":""},"ImageMetadata:":{"id":"","__typename":"ImageMetadata"},"ImageMetadata:1*_LkVyEmY2-W1rlZD2__W5g.jpeg":{"id":"1*_LkVyEmY2-W1rlZD2__W5g.jpeg","originalWidth":2010,"originalHeight":1140,"__typename":"ImageMetadata"},"ImageMetadata:1*ID7_awC5r-U-zTXrW6w0zA.jpeg":{"id":"1*ID7_awC5r-U-zTXrW6w0zA.jpeg","__typename":"ImageMetadata"},"User:2c3576658a8b":{"id":"2c3576658a8b","__typename":"User","name":"Aymeric Roffé","username":"aymeric_roffe","bio":"","isFollowing":null,"imageId":"0*mufGR_aMLhWdVKIO.jpg","mediumMemberAt":0},"$Collection:6965894c8b8f.colorPalette":{"tintBackgroundSpectrum":null,"__typename":"ColorPalette","defaultBackgroundSpectrum":{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum","typename":"ColorSpectrum"},"highlightSpectrum":{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum","typename":"ColorSpectrum"}},"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum":{"backgroundColor":"#FFFFFFFF","colorPoints":[{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.0","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.1","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.2","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.3","typename":"ColorPoint"}],"__typename":"ColorSpectrum"},"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.0":{"color":"#FF02B875","point":0,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.1":{"color":"#FF00AB6B","point":0.1,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.2":{"color":"#FF1C9963","point":0.2,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.defaultBackgroundSpectrum.colorPoints.3":{"color":"#FF092E20","point":1,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum":{"backgroundColor":"#FFFFFFFF","colorPoints":[{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.0","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.1","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.2","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.3","typename":"ColorPoint"},{"type":"id","generated":true,"id":"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.4","typename":"ColorPoint"}],"__typename":"ColorSpectrum"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.0":{"color":"#FFFFFFFF","point":0,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.1":{"color":"#FFE9FDF0","point":0.1,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.2":{"color":"#FFE2FAEE","point":0.2,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.3":{"color":"#FFADFFCF","point":0.6,"__typename":"ColorPoint"},"$Collection:6965894c8b8f.colorPalette.highlightSpectrum.colorPoints.4":{"color":"#FF7DFFB3","point":1,"__typename":"ColorPoint"},"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}})":{"isLockedPreviewOnly":false,"validatedShareKey":"","__typename":"PostContent","bodyModel":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}}).bodyModel","typename":"RichText"}},"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}}).bodyModel.sections.0":{"name":"40b1","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null,"__typename":"Section"},"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}}).bodyModel":{"sections":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.content({\"postMeteringOptions\":{}}).bodyModel.sections.0","typename":"Section"}],"paragraphs":[{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_0","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_1","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_2","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_3","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_4","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_5","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_6","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_7","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_8","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_9","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_10","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_11","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_12","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_13","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_14","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_15","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_16","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_17","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_18","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_19","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_20","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_21","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_22","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_23","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_24","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_25","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_26","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_27","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_28","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_29","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_30","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_31","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_32","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_33","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_34","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_35","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_36","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_37","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_38","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_39","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_40","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_41","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_42","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_43","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_44","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_45","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_46","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_47","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_48","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_49","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_50","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_51","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_52","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_53","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_54","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_55","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_56","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_57","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_58","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_59","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_60","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_61","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_62","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_63","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_64","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_65","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_66","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_67","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_68","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_69","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_70","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_71","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_72","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_73","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_74","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_75","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_76","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_77","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_78","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_79","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_80","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_81","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_82","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_83","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_84","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_85","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_86","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_87","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_88","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_89","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_90","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_91","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_92","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_93","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_94","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_95","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_96","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_97","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_98","typename":"Paragraph"},{"type":"id","generated":false,"id":"Paragraph:f7ff17b467b5_99","typename":"Paragraph"}],"__typename":"RichText"},"Paragraph:f7ff17b467b5_0":{"id":"f7ff17b467b5_0","name":"daf0","type":"H3","href":null,"layout":null,"metadata":null,"text":"Node.js and CPU profiling on production (in real-time without downtime)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_1":{"id":"f7ff17b467b5_1","name":"0231","type":"H3","href":null,"layout":null,"metadata":null,"text":"Why CPU monitoring is important?","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_2":{"id":"f7ff17b467b5_2","name":"d2c1","type":"P","href":null,"layout":null,"metadata":null,"text":"I work at Voodoo, a French company that creates mobile video games. We have a lot of challenges with performance, availability, and scalability because of the insane amount of traffic our infrastructure supports (billions of events\u002Frequests per day …… no joke!). In this setting, every metric is important and gives us a lot of information about the state of our system.","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_2.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_2.markups.0":{"type":"A","start":10,"end":16,"href":"http:\u002F\u002Fvoodoo.io\u002F","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_3":{"id":"f7ff17b467b5_3","name":"0e89","type":"P","href":null,"layout":null,"metadata":null,"text":"When working with Node.js one of the most critical resources to monitor is the CPU. Most of the time, when working on a low traffic API or project we don’t realize how many simple lines of code can have a huge impact on CPU. On the other hand, when traffic increases, a simple mistake can cost dearly.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_4":{"id":"f7ff17b467b5_4","name":"292e","type":"H3","href":null,"layout":null,"metadata":null,"text":"Resources","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_5":{"id":"f7ff17b467b5_5","name":"1efa","type":"P","href":null,"layout":null,"metadata":null,"text":"What kind of resources does your application need? In most cases, we focus on memory and CPU. Good monitoring of these two elements is mandatory for an application running on production.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_6":{"id":"f7ff17b467b5_6","name":"dce9","type":"P","href":null,"layout":null,"metadata":null,"text":"For memory, constant monitoring is the best practice to track the worst developer nightmare a.k.a memory leak.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_7":{"id":"f7ff17b467b5_7","name":"a38c","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*5o3M5niyi911waUrKWVZ0Q.png","typename":"ImageMetadata"},"text":"Memory leak in action","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*5o3M5niyi911waUrKWVZ0Q.png":{"id":"1*5o3M5niyi911waUrKWVZ0Q.png","originalHeight":970,"originalWidth":1894,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_8":{"id":"f7ff17b467b5_8","name":"69dd","type":"P","href":null,"layout":null,"metadata":null,"text":"A good way to debug memory leak is a memory dump and\u002For memory sampling but this is not the subject.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_9":{"id":"f7ff17b467b5_9","name":"1fbc","type":"P","href":null,"layout":null,"metadata":null,"text":"(for more details about V8 and its garbage collector you can read my previous article here)","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_9.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_9.markups.0":{"type":"A","start":86,"end":90,"href":"https:\u002F\u002Fmedium.com\u002Fvoodoo-engineering\u002Fnodejs-internals-v8-garbage-collector-a6eca82540ec","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_10":{"id":"f7ff17b467b5_10","name":"6f9a","type":"PQ","href":null,"layout":null,"metadata":null,"text":"Stay focused on the CPU!","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_11":{"id":"f7ff17b467b5_11","name":"40e6","type":"P","href":null,"layout":null,"metadata":null,"text":"Most of the time we monitor this resource with a simple solution allowing us to get a graph representing CPU consumption over time. If we want to be reactive we add an alarm, based on a threshold, to warn us when CPU usage is too high.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_12":{"id":"f7ff17b467b5_12","name":"7b8b","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*8uOdeOfnUzTaFIY1r7oAMg.png","typename":"ImageMetadata"},"text":"Basic CPU monitoring","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*8uOdeOfnUzTaFIY1r7oAMg.png":{"id":"1*8uOdeOfnUzTaFIY1r7oAMg.png","originalHeight":230,"originalWidth":997,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_13":{"id":"f7ff17b467b5_13","name":"0728","type":"P","href":null,"layout":null,"metadata":null,"text":"And what next? We don’t have data about the state of the instance when the CPU usage has increased. So we can’t determine why we had this peak, at least not without an important time of debugging, comparing log, etc. This is exactly why you need to use CPU profiling.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_14":{"id":"f7ff17b467b5_14","name":"8d00","type":"H3","href":null,"layout":null,"metadata":null,"text":"CPU profiling: what’s the difference with CPU monitoring?","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_15":{"id":"f7ff17b467b5_15","name":"19fb","type":"PQ","href":null,"layout":null,"metadata":null,"text":"“Most commonly, profiling information serves to aid program optimization. Profiling is achieved by instrumenting either the program source code or its binary executable form using a tool called a profiler”","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_16":{"id":"f7ff17b467b5_16","name":"3e11","type":"P","href":null,"layout":null,"metadata":null,"text":"Basically, for Node.js, CPU profiling is nothing more than collecting data about functions which are CPU consuming. And ideally, get a graphic representation of the collected data a.k.a “flame graph” or “flame chart”.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_17":{"id":"f7ff17b467b5_17","name":"91c5","type":"P","href":null,"layout":null,"metadata":null,"text":"It will help you to track the exact file, line, and function which takes the most time to execute.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_18":{"id":"f7ff17b467b5_18","name":"088b","type":"H3","href":null,"layout":null,"metadata":null,"text":"What about existing solutions?","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_19":{"id":"f7ff17b467b5_19","name":"dd40","type":"H4","href":null,"layout":null,"metadata":null,"text":"Add arguments to Node.js","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_20":{"id":"f7ff17b467b5_20","name":"0306","type":"P","href":null,"layout":null,"metadata":null,"text":"Node.js provides a way to collect data about CPU with two command lines.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_21":{"id":"f7ff17b467b5_21","name":"66c8","type":"P","href":null,"layout":null,"metadata":null,"text":"The first command just executes your application, the argument just tells to V8 engine to collect data. When you stop your script all information is stored in a file.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_22":{"id":"f7ff17b467b5_22","name":"16bd","type":"PRE","href":null,"layout":null,"metadata":null,"text":"node --prof app.js","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_23":{"id":"f7ff17b467b5_23","name":"768f","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*e7gjTlzi55udTXbbPeEs2A.png","typename":"ImageMetadata"},"text":"Output of — prof","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*e7gjTlzi55udTXbbPeEs2A.png":{"id":"1*e7gjTlzi55udTXbbPeEs2A.png","originalHeight":534,"originalWidth":849,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_24":{"id":"f7ff17b467b5_24","name":"57a6","type":"P","href":null,"layout":null,"metadata":null,"text":"It is not very clear, is it?","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_25":{"id":"f7ff17b467b5_25","name":"abed","type":"P","href":null,"layout":null,"metadata":null,"text":"That’s why you just need to run this second command to transform your raw file into a more human-readable output.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_26":{"id":"f7ff17b467b5_26","name":"061c","type":"PRE","href":null,"layout":null,"metadata":null,"text":"node --prof-process isolate-0xnnnnn-v8.log \u003E processed.txt","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_27":{"id":"f7ff17b467b5_27","name":"c6ab","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*JJkRh7JihTUo2apW_9ZXAQ.png","typename":"ImageMetadata"},"text":"The output of — prof-process","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*JJkRh7JihTUo2apW_9ZXAQ.png":{"id":"1*JJkRh7JihTUo2apW_9ZXAQ.png","originalHeight":306,"originalWidth":754,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_28":{"id":"f7ff17b467b5_28","name":"85fa","type":"P","href":null,"layout":null,"metadata":null,"text":"It seems better, here you can determine which function consumes the most of CPU (percentage of the time).","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_29":{"id":"f7ff17b467b5_29","name":"9e54","type":"H4","href":null,"layout":null,"metadata":null,"text":"ClinicJs","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_30":{"id":"f7ff17b467b5_30","name":"176a","type":"P","href":null,"layout":null,"metadata":null,"text":"ClinicJs is a set of tools that allow you to collect data and display performance charts. With “clinic flame” you can generate a flame graph based on CPU consumption.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_31":{"id":"f7ff17b467b5_31","name":"4aeb","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*6wi5BlNNnykjZs0PufrvLQ.png","typename":"ImageMetadata"},"text":"Flame chart","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*6wi5BlNNnykjZs0PufrvLQ.png":{"id":"1*6wi5BlNNnykjZs0PufrvLQ.png","originalHeight":1534,"originalWidth":2880,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_32":{"id":"f7ff17b467b5_32","name":"5347","type":"P","href":null,"layout":null,"metadata":null,"text":"But once again, you have to stop your app, launch the tool, then terminate the script in order to display the graph (files are generated on the disk).","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_33":{"id":"f7ff17b467b5_33","name":"d6e6","type":"P","href":null,"layout":null,"metadata":null,"text":"For more details, you can see the project.","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_33.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_33.markups.0":{"type":"A","start":34,"end":41,"href":"https:\u002F\u002Fclinicjs.org\u002F","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_34":{"id":"f7ff17b467b5_34","name":"be18","type":"P","href":null,"layout":null,"metadata":null,"text":"To sum up, here is the list of drawbacks of the two previous solutions.","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_34.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_34.markups.0":{"type":"STRONG","start":0,"end":9,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_35":{"id":"f7ff17b467b5_35","name":"3bef","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Downtime (you should kill your application to collect the data)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_36":{"id":"f7ff17b467b5_36","name":"c0df","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Performance overhead","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_37":{"id":"f7ff17b467b5_37","name":"27ec","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Data collected locally","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_38":{"id":"f7ff17b467b5_38","name":"a4fd","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Need external tools (ClinicJs)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_39":{"id":"f7ff17b467b5_39","name":"3f2c","type":"P","href":null,"layout":null,"metadata":null,"text":"In conclusion: these are good solutions to debug on development environments and\u002For on a local machine.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_40":{"id":"f7ff17b467b5_40","name":"fcd9","type":"BQ","href":null,"layout":null,"metadata":null,"text":"Unfortunately, CPU issues have a worrying tendency to occur on production, and when you are not in front of your screen.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_41":{"id":"f7ff17b467b5_41","name":"13ef","type":"H3","href":null,"layout":null,"metadata":null,"text":"Inspector","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_42":{"id":"f7ff17b467b5_42","name":"294e","type":"P","href":null,"layout":null,"metadata":null,"text":"“Inspector” refers to an API thanks to which you can debug your application. By debugging we mean to be able to connect directly to the core of Node.js to collect real-time data about the process.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_43":{"id":"f7ff17b467b5_43","name":"ea23","type":"P","href":null,"layout":null,"metadata":null,"text":"A module, available since version 8.x of Node.js, provides this kind of feature. There are two advantages to use it:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_44":{"id":"f7ff17b467b5_44","name":"ed54","type":"ULI","href":null,"layout":null,"metadata":null,"text":"it’s native (no additional installation required)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_45":{"id":"f7ff17b467b5_45","name":"7992","type":"ULI","href":null,"layout":null,"metadata":null,"text":"it can be used programmatically (no interruption)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_46":{"id":"f7ff17b467b5_46","name":"731f","type":"P","href":null,"layout":null,"metadata":null,"text":"And here is how to make a CPU profiling with this module:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_47":{"id":"f7ff17b467b5_47","name":"fb1e","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":{"type":"id","generated":true,"id":"$Paragraph:f7ff17b467b5_47.iframe","typename":"Iframe"},"mixtapeMetadata":null},"MediaResource:e6590d28762ae9dc52a79fab03d9bfb4":{"id":"e6590d28762ae9dc52a79fab03d9bfb4","iframeSrc":"","iframeHeight":0,"iframeWidth":0,"title":"CPU profiling with inspector","__typename":"MediaResource"},"$Paragraph:f7ff17b467b5_47.iframe":{"mediaResource":{"type":"id","generated":false,"id":"MediaResource:e6590d28762ae9dc52a79fab03d9bfb4","typename":"MediaResource"},"__typename":"Iframe"},"Paragraph:f7ff17b467b5_48":{"id":"f7ff17b467b5_48","name":"79d1","type":"P","href":null,"layout":null,"metadata":null,"text":"As you can see, all the data is returned in variable “profile”. Basically, it’s a simple JSON object representing all the call stack and the CPU consumption for each function. And if you want to use an Async\u002Fawait syntax you can install the module “inspector-api”.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_49":{"id":"f7ff17b467b5_49","name":"c085","type":"PRE","href":null,"layout":null,"metadata":null,"text":"npm install inspector-api --save","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_50":{"id":"f7ff17b467b5_50","name":"195d","type":"P","href":null,"layout":null,"metadata":null,"text":"It also comes with a built-in exporter to send data to S3, with this method you don’t write anything on the disk!","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_50.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_50.markups.0":{"type":"STRONG","start":76,"end":112,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_51":{"id":"f7ff17b467b5_51","name":"7085","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":{"type":"id","generated":true,"id":"$Paragraph:f7ff17b467b5_51.iframe","typename":"Iframe"},"mixtapeMetadata":null},"MediaResource:a5c2cfaff5b466e10f3f24ac0dee3dd1":{"id":"a5c2cfaff5b466e10f3f24ac0dee3dd1","iframeSrc":"","iframeHeight":0,"iframeWidth":0,"title":"CPU profiling with inspector-api module","__typename":"MediaResource"},"$Paragraph:f7ff17b467b5_51.iframe":{"mediaResource":{"type":"id","generated":false,"id":"MediaResource:a5c2cfaff5b466e10f3f24ac0dee3dd1","typename":"MediaResource"},"__typename":"Iframe"},"Paragraph:f7ff17b467b5_52":{"id":"f7ff17b467b5_52","name":"964f","type":"P","href":null,"layout":null,"metadata":null,"text":"If you use another storage system you can just collect the data and export it by yourself.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_53":{"id":"f7ff17b467b5_53","name":"e0f0","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":{"type":"id","generated":true,"id":"$Paragraph:f7ff17b467b5_53.iframe","typename":"Iframe"},"mixtapeMetadata":null},"MediaResource:a258a6f9cd216401571004e3dffd693b":{"id":"a258a6f9cd216401571004e3dffd693b","iframeSrc":"","iframeHeight":0,"iframeWidth":0,"title":"CPU profiling","__typename":"MediaResource"},"$Paragraph:f7ff17b467b5_53.iframe":{"mediaResource":{"type":"id","generated":false,"id":"MediaResource:a258a6f9cd216401571004e3dffd693b","typename":"MediaResource"},"__typename":"Iframe"},"Paragraph:f7ff17b467b5_54":{"id":"f7ff17b467b5_54","name":"848b","type":"H3","href":null,"layout":null,"metadata":null,"text":"And now, CPU profiling on-demand!","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_55":{"id":"f7ff17b467b5_55","name":"6933","type":"P","href":null,"layout":null,"metadata":null,"text":"We have an API that we want to test with autocannon tool. At this step, our project is able to serve around 200 requests in 20 seconds. There is probably a mistake somewhere in the code which slows down our application.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_56":{"id":"f7ff17b467b5_56","name":"7948","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*cS9IXYGfMmgxaAUlC7oqOQ.png","typename":"ImageMetadata"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*cS9IXYGfMmgxaAUlC7oqOQ.png":{"id":"1*cS9IXYGfMmgxaAUlC7oqOQ.png","originalHeight":362,"originalWidth":847,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_57":{"id":"f7ff17b467b5_57","name":"fb78","type":"P","href":null,"layout":null,"metadata":null,"text":"But now, what if we want to trigger a CPU profiling remotely (without ssh connection to the server)? It’s possible using Websocket, SSE or any other technology to send a message to your instance.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_58":{"id":"f7ff17b467b5_58","name":"2c91","type":"P","href":null,"layout":null,"metadata":null,"text":"Here is a simple example of a server using the “ws” module to send a message to a unique instance.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_59":{"id":"f7ff17b467b5_59","name":"c1d6","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":{"type":"id","generated":true,"id":"$Paragraph:f7ff17b467b5_59.iframe","typename":"Iframe"},"mixtapeMetadata":null},"MediaResource:feef2118ed0761bda1c2821a47c2297b":{"id":"feef2118ed0761bda1c2821a47c2297b","iframeSrc":"","iframeHeight":0,"iframeWidth":0,"title":"WS server","__typename":"MediaResource"},"$Paragraph:f7ff17b467b5_59.iframe":{"mediaResource":{"type":"id","generated":false,"id":"MediaResource:feef2118ed0761bda1c2821a47c2297b","typename":"MediaResource"},"__typename":"Iframe"},"Paragraph:f7ff17b467b5_60":{"id":"f7ff17b467b5_60","name":"2206","type":"P","href":null,"layout":null,"metadata":null,"text":"Of course, it only works with one instance, but it’s a fake project to demonstrate the principle ;)","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_61":{"id":"f7ff17b467b5_61","name":"e92d","type":"P","href":null,"layout":null,"metadata":null,"text":"Now we can request our server to ask it to send a message to our instance and start\u002Fstop a CPU profiling. In your instance, you can handle the CPU profiling like this:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_62":{"id":"f7ff17b467b5_62","name":"7d09","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":{"type":"id","generated":true,"id":"$Paragraph:f7ff17b467b5_62.iframe","typename":"Iframe"},"mixtapeMetadata":null},"MediaResource:8a678f3011fef4d2c8296408f0b552fe":{"id":"8a678f3011fef4d2c8296408f0b552fe","iframeSrc":"","iframeHeight":0,"iframeWidth":0,"title":"WS client side","__typename":"MediaResource"},"$Paragraph:f7ff17b467b5_62.iframe":{"mediaResource":{"type":"id","generated":false,"id":"MediaResource:8a678f3011fef4d2c8296408f0b552fe","typename":"MediaResource"},"__typename":"Iframe"},"Paragraph:f7ff17b467b5_63":{"id":"f7ff17b467b5_63","name":"c3d0","type":"P","href":null,"layout":null,"metadata":null,"text":"To sum up: we are able to trigger a CPU profiling, on-demand, in real-time, without interruption or connection to the server. Data can be collected on the disk (and extracted later) or can be sent to S3 (or any other system, PR are welcomed on the inspector-api project).","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_63.markups.0","typename":"Markup"},{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_63.markups.1","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_63.markups.0":{"type":"A","start":248,"end":269,"href":"https:\u002F\u002Fgithub.com\u002Fwallet77\u002Fv8-inspector-api","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_63.markups.1":{"type":"STRONG","start":0,"end":9,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_64":{"id":"f7ff17b467b5_64","name":"6e87","type":"BQ","href":null,"layout":null,"metadata":null,"text":"And because the profiler is a part of V8 itself, the format of the generated JSON file is compatible with the Chrome dev tools.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_65":{"id":"f7ff17b467b5_65","name":"1859","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*CANkRN_yzl9tfrGd2F41wQ.png","typename":"ImageMetadata"},"text":"CPU profiling before optimization","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*CANkRN_yzl9tfrGd2F41wQ.png":{"id":"1*CANkRN_yzl9tfrGd2F41wQ.png","originalHeight":708,"originalWidth":1144,"focusPercentX":null,"focusPercentY":null,"alt":"CPU profiling before optimization","__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_66":{"id":"f7ff17b467b5_66","name":"2cda","type":"P","href":null,"layout":null,"metadata":null,"text":"How can we identify an issue?","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_66.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_66.markups.0":{"type":"STRONG","start":0,"end":29,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_67":{"id":"f7ff17b467b5_67","name":"e0d2","type":"P","href":null,"layout":null,"metadata":null,"text":"A CPU profiling should be read like this:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_68":{"id":"f7ff17b467b5_68","name":"27e6","type":"ULI","href":null,"layout":null,"metadata":null,"text":"the x-axis shows the stack profile population","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_69":{"id":"f7ff17b467b5_69","name":"194a","type":"ULI","href":null,"layout":null,"metadata":null,"text":"the y-axis shows stack depth","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_70":{"id":"f7ff17b467b5_70","name":"e950","type":"P","href":null,"layout":null,"metadata":null,"text":"What does it mean?","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_70.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_70.markups.0":{"type":"STRONG","start":0,"end":18,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_71":{"id":"f7ff17b467b5_71","name":"174c","type":"P","href":null,"layout":null,"metadata":null,"text":"The larger is a box (a function call) the more it consumed CPU. So a good CPU profiling should look like a “flame” graph where each stack is the finest possible.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_72":{"id":"f7ff17b467b5_72","name":"48d9","type":"P","href":null,"layout":null,"metadata":null,"text":"In our example, every request try to generate a token. For this purpose, it calls the function pbkdf2 which is CPU consuming. Our CPU profile looks like a sequence of big blocks of time, like if the last function in the call stack takes 99% of the total time.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_73":{"id":"f7ff17b467b5_73","name":"d62c","type":"P","href":null,"layout":null,"metadata":null,"text":"The CPU profiling after optimizations, with the same time range.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_74":{"id":"f7ff17b467b5_74","name":"1325","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*87KlGgfbuWP38nAaQaj3xw.png","typename":"ImageMetadata"},"text":"CPU profiling after optimizations","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*87KlGgfbuWP38nAaQaj3xw.png":{"id":"1*87KlGgfbuWP38nAaQaj3xw.png","originalHeight":523,"originalWidth":930,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_75":{"id":"f7ff17b467b5_75","name":"10ee","type":"P","href":null,"layout":null,"metadata":null,"text":"As you can notice, we have to zoom to the profile if we want to see the call stack, because after optimizations the API was able to take a lot more traffic. Now every function in the call stack looks like a microtask.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_76":{"id":"f7ff17b467b5_76","name":"c339","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*EO-pr4RolgcAOj_Uk1rpDA.png","typename":"ImageMetadata"},"text":"Zoom in the CPU profiling","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*EO-pr4RolgcAOj_Uk1rpDA.png":{"id":"1*EO-pr4RolgcAOj_Uk1rpDA.png","originalHeight":576,"originalWidth":1844,"focusPercentX":null,"focusPercentY":null,"alt":"CPU profiling after optimization","__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_77":{"id":"f7ff17b467b5_77","name":"10f1","type":"P","href":null,"layout":null,"metadata":null,"text":"And now our application is able to serve more than 200,000 requests in 20 seconds; we increased the performance by a factor of 100k!","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_77.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_77.markups.0":{"type":"STRONG","start":83,"end":131,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_78":{"id":"f7ff17b467b5_78","name":"a52e","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"type":"id","generated":false,"id":"ImageMetadata:1*kfOK60PtmWx6iP681-qRcg.png","typename":"ImageMetadata"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*kfOK60PtmWx6iP681-qRcg.png":{"id":"1*kfOK60PtmWx6iP681-qRcg.png","originalHeight":362,"originalWidth":845,"focusPercentX":null,"focusPercentY":null,"alt":null,"__typename":"ImageMetadata"},"Paragraph:f7ff17b467b5_79":{"id":"f7ff17b467b5_79","name":"98b9","type":"H3","href":null,"layout":null,"metadata":null,"text":"More than just CPU profiling","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_80":{"id":"f7ff17b467b5_80","name":"e1ad","type":"P","href":null,"layout":null,"metadata":null,"text":"With the inspector module, you can do much more than just CPU profiling, here is a non-exhaustive list:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_81":{"id":"f7ff17b467b5_81","name":"eb04","type":"ULI","href":null,"layout":null,"metadata":null,"text":"memory dump & memory sampling","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_82":{"id":"f7ff17b467b5_82","name":"a9ea","type":"ULI","href":null,"layout":null,"metadata":null,"text":"code coverage","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_83":{"id":"f7ff17b467b5_83","name":"b896","type":"ULI","href":null,"layout":null,"metadata":null,"text":"use the debugger in real-time","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_84":{"id":"f7ff17b467b5_84","name":"06d2","type":"H3","href":null,"layout":null,"metadata":null,"text":"Warnings","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_85":{"id":"f7ff17b467b5_85","name":"731b","type":"P","href":null,"layout":null,"metadata":null,"text":"Every tool, even the most powerful, comes with its own disadvantages. If you enable the profiler and\u002For the debugger on your production you have to keep an eye on two things:","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_86":{"id":"f7ff17b467b5_86","name":"e485","type":"P","href":null,"layout":null,"metadata":null,"text":"1) performance overhead","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_86.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_86.markups.0":{"type":"STRONG","start":0,"end":23,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_87":{"id":"f7ff17b467b5_87","name":"0513","type":"P","href":null,"layout":null,"metadata":null,"text":"A profiler needs to use CPU to work and it collects data into memory. The longer you let it run and the more CPU \u002F memory it will need. This is why you should begin with very short CPU profiling, no more than a few seconds between the start and stop command. And never forget to monitor the impact of the profiler on your own infrastructure. If everything is fine you can increase the time and the frequency of CPU profiling.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_88":{"id":"f7ff17b467b5_88","name":"049c","type":"P","href":null,"layout":null,"metadata":null,"text":"One more very important thing: never forget to always stop a started CPU profiling. You can add a timer to automatically call the stop function after a while.","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_88.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_88.markups.0":{"type":"STRONG","start":31,"end":82,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_89":{"id":"f7ff17b467b5_89","name":"0656","type":"P","href":null,"layout":null,"metadata":null,"text":"2) security","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_89.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_89.markups.0":{"type":"STRONG","start":0,"end":11,"href":null,"anchorType":null,"userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_90":{"id":"f7ff17b467b5_90","name":"7999","type":"P","href":null,"layout":null,"metadata":null,"text":"Using the inspector in Node.js it’s like opening the door of the core of your application. You should be very careful about who can use features like CPU profiling and\u002For the debugger. Never make the inspector “public” as being able to launch a feature from an unsafe route (not protected with an authentification mechanism). Even the collected data can be seen as critical, never send it to a system you do not trust.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_91":{"id":"f7ff17b467b5_91","name":"5618","type":"H3","href":null,"layout":null,"metadata":null,"text":"Conclusion","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_92":{"id":"f7ff17b467b5_92","name":"ae1a","type":"P","href":null,"layout":null,"metadata":null,"text":"CPU profiling is really a must-have tool for every developer. And now, with some precautions, we can run it on production thanks to the amazing work done by the V8 and Node.js team.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_93":{"id":"f7ff17b467b5_93","name":"1eab","type":"P","href":null,"layout":null,"metadata":null,"text":"The inspector module offers a lot more features than you can use to debug your application.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_94":{"id":"f7ff17b467b5_94","name":"0aba","type":"P","href":null,"layout":null,"metadata":null,"text":"I will write another article about using CPU profiling and the inspector on production on a high traffic project.","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_95":{"id":"f7ff17b467b5_95","name":"3c5b","type":"H3","href":null,"layout":null,"metadata":null,"text":"Sources & links","hasDropCap":null,"dropCapImage":null,"markups":[],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_96":{"id":"f7ff17b467b5_96","name":"d86d","type":"ULI","href":null,"layout":null,"metadata":null,"text":"https:\u002F\u002Fnodejs.org\u002Fapi\u002Finspector.html","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_96.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_96.markups.0":{"type":"A","start":0,"end":37,"href":"https:\u002F\u002Fnodejs.org\u002Fapi\u002Finspector.html","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_97":{"id":"f7ff17b467b5_97","name":"cc52","type":"ULI","href":null,"layout":null,"metadata":null,"text":"https:\u002F\u002Fchromedevtools.github.io\u002Fdevtools-protocol\u002Fv8","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_97.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_97.markups.0":{"type":"A","start":0,"end":53,"href":"https:\u002F\u002Fchromedevtools.github.io\u002Fdevtools-protocol\u002Fv8","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_98":{"id":"f7ff17b467b5_98","name":"d331","type":"ULI","href":null,"layout":null,"metadata":null,"text":"https:\u002F\u002Fmedium.com\u002Fnetflix-techblog\u002Fnode-js-in-flames-ddd073803aa4","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_98.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_98.markups.0":{"type":"A","start":0,"end":66,"href":"https:\u002F\u002Fmedium.com\u002Fnetflix-techblog\u002Fnode-js-in-flames-ddd073803aa4","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Paragraph:f7ff17b467b5_99":{"id":"f7ff17b467b5_99","name":"6420","type":"ULI","href":null,"layout":null,"metadata":null,"text":"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Finspector-api","hasDropCap":null,"dropCapImage":null,"markups":[{"type":"id","generated":true,"id":"Paragraph:f7ff17b467b5_99.markups.0","typename":"Markup"}],"__typename":"Paragraph","iframe":null,"mixtapeMetadata":null},"Paragraph:f7ff17b467b5_99.markups.0":{"type":"A","start":0,"end":43,"href":"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Finspector-api","anchorType":"LINK","userId":null,"linkMetadata":null,"__typename":"Markup"},"Tag:nodejs":{"id":"nodejs","displayTitle":"Nodejs","__typename":"Tag"},"Tag:performance":{"id":"performance","displayTitle":"Performance","__typename":"Tag"},"Tag:cpu":{"id":"cpu","displayTitle":"Cpu","__typename":"Tag"},"Tag:profiling":{"id":"profiling","displayTitle":"Profiling","__typename":"Tag"},"Tag:inspector":{"id":"inspector","displayTitle":"Inspector","__typename":"Tag"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0":{"__typename":"SuggestedPost","post":{"type":"id","generated":false,"id":"Post:bdc82d07bb9f","typename":"Post"},"postSuggestionReasons":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0","typename":"PostSuggestionReason"}]},"Post:bdc82d07bb9f":{"__typename":"Post","id":"bdc82d07bb9f","title":"WebSockets on production with Node.js","isLocked":false,"previewImage":{"type":"id","generated":false,"id":"ImageMetadata:1*PgziD8xisQlGXkWMjDGz5w.png","typename":"ImageMetadata"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fvoodoo-engineering\u002Fwebsockets-on-production-with-node-js-bdc82d07bb9f","firstPublishedAt":1583920514760,"readingTime":4.082075471698113,"statusForCollection":"APPROVED","visibility":"PUBLIC","collection":{"type":"id","generated":false,"id":"Collection:6965894c8b8f","typename":"Collection"},"creator":{"type":"id","generated":false,"id":"User:ead7e4ca29dd","typename":"User"},"previewContent":{"type":"id","generated":true,"id":"$Post:bdc82d07bb9f.previewContent","typename":"PreviewContent"},"readingList":"READING_LIST_NONE","clapCount":42,"viewerClapCount":0,"isLimitedState":false,"voterCount":4,"recommenders":[]},"ImageMetadata:1*PgziD8xisQlGXkWMjDGz5w.png":{"id":"1*PgziD8xisQlGXkWMjDGz5w.png","focusPercentX":null,"focusPercentY":null,"__typename":"ImageMetadata"},"$Post:bdc82d07bb9f.previewContent":{"isFullContent":false,"__typename":"PreviewContent"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0":{"reason":"POSTS_SHARING_COLLECTION_AND_TAGS","users":[],"topics":[],"collections":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0.collections.0","typename":"SuggestionReasonCollection"}],"tags":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0.tags.0","typename":"SuggestionReasonTag"}],"__typename":"PostSuggestionReason"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0.collections.0":{"name":"Voodoo Engineering","__typename":"SuggestionReasonCollection"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0.postSuggestionReasons.0.tags.0":{"name":"Nodejs","__typename":"SuggestionReasonTag"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1":{"__typename":"SuggestedPost","post":{"type":"id","generated":false,"id":"Post:19b66e22711e","typename":"Post"},"postSuggestionReasons":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0","typename":"PostSuggestionReason"}]},"Post:19b66e22711e":{"__typename":"Post","id":"19b66e22711e","title":"A successful Voodoo.io NodeJS meetup on 13th November!","isLocked":false,"previewImage":{"type":"id","generated":false,"id":"ImageMetadata:1*flvQZznQlpVs26M6SCL7DA.jpeg","typename":"ImageMetadata"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fvoodoo-engineering\u002Fa-successful-voodoo-io-nodejs-meetup-on-13th-november-19b66e22711e","firstPublishedAt":1574277093966,"readingTime":2.6301886792452827,"statusForCollection":"APPROVED","visibility":"PUBLIC","collection":{"type":"id","generated":false,"id":"Collection:6965894c8b8f","typename":"Collection"},"creator":{"type":"id","generated":false,"id":"User:2c3576658a8b","typename":"User"},"previewContent":{"type":"id","generated":true,"id":"$Post:19b66e22711e.previewContent","typename":"PreviewContent"},"readingList":"READING_LIST_NONE","clapCount":5,"viewerClapCount":0,"isLimitedState":false,"voterCount":5,"recommenders":[]},"ImageMetadata:1*flvQZznQlpVs26M6SCL7DA.jpeg":{"id":"1*flvQZznQlpVs26M6SCL7DA.jpeg","focusPercentX":null,"focusPercentY":null,"__typename":"ImageMetadata"},"$Post:19b66e22711e.previewContent":{"isFullContent":false,"__typename":"PreviewContent"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0":{"reason":"POSTS_SHARING_COLLECTION_AND_TAGS","users":[],"topics":[],"collections":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0.collections.0","typename":"SuggestionReasonCollection"}],"tags":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0.tags.0","typename":"SuggestionReasonTag"}],"__typename":"PostSuggestionReason"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0.collections.0":{"name":"Voodoo Engineering","__typename":"SuggestionReasonCollection"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1.postSuggestionReasons.0.tags.0":{"name":"Nodejs","__typename":"SuggestionReasonTag"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.2":{"__typename":"SuggestedPost","post":{"type":"id","generated":false,"id":"Post:c517c7dab62d","typename":"Post"},"postSuggestionReasons":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.2.postSuggestionReasons.0","typename":"PostSuggestionReason"}]},"Post:c517c7dab62d":{"__typename":"Post","id":"c517c7dab62d","title":"Request Id Tracing in Node.js Applications","isLocked":false,"previewImage":{"type":"id","generated":false,"id":"ImageMetadata:0*sduEjXj8BCMSMYU1","typename":"ImageMetadata"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fitnext.io\u002Frequest-id-tracing-in-node-js-applications-c517c7dab62d","firstPublishedAt":1544095557903,"readingTime":4.849056603773585,"statusForCollection":"APPROVED","visibility":"PUBLIC","collection":{"type":"id","generated":false,"id":"Collection:5b301f10ddcd","typename":"Collection"},"creator":{"type":"id","generated":false,"id":"User:9a27eb90e406","typename":"User"},"previewContent":{"type":"id","generated":true,"id":"$Post:c517c7dab62d.previewContent","typename":"PreviewContent"},"readingList":"READING_LIST_NONE","clapCount":827,"viewerClapCount":0,"isLimitedState":false,"voterCount":129,"recommenders":[]},"ImageMetadata:0*sduEjXj8BCMSMYU1":{"id":"0*sduEjXj8BCMSMYU1","focusPercentX":null,"focusPercentY":null,"__typename":"ImageMetadata"},"Collection:5b301f10ddcd":{"name":"ITNEXT","id":"5b301f10ddcd","slug":"itnext","domain":"itnext.io","__typename":"Collection"},"User:9a27eb90e406":{"name":"Andrey Pechkurov","username":"apechkurov","id":"9a27eb90e406","bio":"Developer\u002Ftech lead with 10+ years of experience. Good at Java and Node.js. Architectural design and challenging problems are the things that I love.","isFollowing":null,"imageId":"1*n5_aO67yi-62ToDsxnr4bw.png","mediumMemberAt":0,"__typename":"User"},"$Post:c517c7dab62d.previewContent":{"isFullContent":false,"__typename":"PreviewContent"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.2.postSuggestionReasons.0":{"reason":"CF_POST_SIMILAR_TO_POST","users":[],"topics":[],"collections":[],"tags":[],"__typename":"PostSuggestionReason"},"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}})":{"items":[{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.0","typename":"SuggestedPost"},{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.1","typename":"SuggestedPost"},{"type":"id","generated":true,"id":"$Post:d6e62af173e2.recirc({\"paging\":{\"limit\":3}}).items.2","typename":"SuggestedPost"}],"__typename":"RecircItemConnection"},"$Post:d6e62af173e2.postResponses":{"count":0,"__typename":"PostResponses","responsesConnection({\"paging\":{\"limit\":10}})":{"type":"id","generated":true,"id":"$Post:d6e62af173e2.postResponses.responsesConnection({\"paging\":{\"limit\":10}})","typename":"StreamConnection"}},"Collaborator:d6e62af173e2-aa221ef5cd0d":{"id":"d6e62af173e2-aa221ef5cd0d","user":{"type":"id","generated":false,"id":"User:aa221ef5cd0d","typename":"User"},"state":"visible","__typename":"Collaborator"},"User:aa221ef5cd0d":{"id":"aa221ef5cd0d","name":"Clint FENTON","__typename":"User"},"$Post:d6e62af173e2.previewContent":{"subtitle":"Why CPU monitoring is important?","__typename":"PreviewContent"},"$Post:d6e62af173e2.postResponses.responsesConnection({\"paging\":{\"limit\":10}})":{"pagingInfo":null,"stream":[],"__typename":"StreamConnection"}}
|